Yineleme yöntemlerinin karşılaştırılması: yineleme sayısı ve işlemci zamanı


14

Rasgele kare matrisleri tersine çevirmek için iki yinelemeli yöntemi karşılaştırıyorum. Matrisler rasgele olduğundan, her test durumu hem farklı miktarlarda yineleme hem de farklı geçen süreleri alır. Benim sorum, ortalama CPU süresinin üstünde, her iki yöntem tarafından yöntemlerin karşılaştırılması için yararlı bilgiler tarafından alınan yinelemelerin ortalama değeridir.


4
Sorunuzu umarım daha açık hale getirmek için yeniden yazdım. Lütfen anlamınızı hiçbir şekilde değiştirmediğimden emin olun.
Godric Seer

3
@GodricSeer Düzenlemeniz sorumu geliştirdi. Teşekkürler
srijan

Yanıtlar:


12

Genel olarak, her iki performans karşılaştırması yönteminin yeri vardır.

  • CPU zamanını karşılaştırmak bir anlamda en ilginç metriktir, çünkü günün sonunda hangi yöntemlerin daha hızlı olduğu ile ilgileniyorsunuz. (Ancak, sonlandırma kriterlerinin karşılaştırılabilir olduğundan emin olun; örneğin, her iki yöntemin de aynı doğrulukta bir yaklaşım sağladığını). Dezavantajı, bunun sadece testleri yaptığınız makinede hangi yöntemin (ve daha da önemlisi, hangi uygulamanın ) daha hızlı olduğunu söylemesidir . Farklı mimariye veya yazılıma sahip farklı bir makinenin aynı kazananı alacağının garantisi yoktur.

  • Yineleme sayılarının karşılaştırılması , makineden bağımsızdır, ancak iki yöntemin çok farklı yinelemeleri varsa potansiyel olarak yanıltıcıdır - bu durumda daha az ancak daha pahalı yinelemelere sahip yöntem tercih edilmeyebilir (örneğin, optimizasyon için Newton'a göre gradyan yöntemleri) sadece çok düşük doğrulukta ihtiyacınız varsa).

Yani, evet, her iki sayıyı da vermek mantıklıdır [1] ve sık sık yayınlarda yapıldığını gördüm. Ayrıca üçüncü bir seçenek daha vardır:

  • Temel işlem sayılarının karşılaştırılması . Her iki yineleme de aynı tür uygun pahalı işlemlerden oluşuyorsa, ancak farklı bir sayı gerektiriyorsa (muhtemelen her yinelemede aynı sayı olmasa bile), bu işlemlerin toplam sayısını saymak mantıklıdır . Sizin durumunuzda, muhtemel bir aday matris-vektör veya matris-matris çarpımı olacaktır.

[1] İstatistikleri çoklu çalışmalarda kesin olarak sunmak; araçları gösterirseniz, standart sapmaları da eklemeyi unutmayın.


5
Sadece araç almayın! Rastgele girişlerle yeterli test noktanız varsa, bir dağılım çizin.
Bill Barth

1
@BillBarth - iyi bir nokta, ancak bu her zaman mümkün olmayabilir; ancak ortalama ile birlikte standart sapmalar vermek her zaman mümkün olmalıdır. Aslında, performansı raporlamak için hangi istatistiklerin sunulması mükemmel bir takip sorusu gibi görünüyor.
Christian Clason

@BillBarth İyi bir noktaya değindiniz. Ancak, artan bir şekilde birkaç test matrisi kullanıyorum. Bu gibi durumlarda dağılımı çizmek mümkün değildir, çünkü o zaman diğer tüm test matrisleri için dağılımları çizmek zorundayım. Bu yüzden onları tablo haline getirmek istedim. Yorumlarınız için teşekkürler.
srijan

1
@srijan: Verilere sahip olacaksınız, mümkün olan her yerde histogramları kendiniz çizmelisiniz. Hepsini yayınlamak zorunda değilsiniz, ancak size bir dağılım grafiğinin bir sayı denizi veya sadece ortalamaların göstereceğinden daha fazlasını söyleyeceğine söz veriyorum.
Bill Barth

Yineleme başına yürütme süresini dahil ederim. Her bir matris farklı olduğundan, farklı yürütme sürelerine sahip farklı sayıda yinelemeye sahip olabilirsiniz. @Cristian'ın söyledikleriyle birlikte, yineleme başına yürütme süresi yararlı olacaktır.
jbcolmenares

4

Yinelemelerin sayısını yanıltıcı bir metrik olarak buluyorum çünkü olmadığı zaman "hız" ı gösteriyor. Bu farkı gösteren birkaç farklı önkoşulu karşılaştırmanın basit bir örneği için buraya bakın: http://www.dealii.org/developer/doxygen/deal.II/step_6.html#Possibilityforextensions


Cevap için teşekkürler. Bu satırın 'yineleme sayısının yanıltıcı bir metrik olduğunu anlayamıyorum çünkü "olmadığı zaman" hızı "gösteriyor". Önerdiğiniz örneği anlamak benim için biraz zor.
srijan

Söylediğim şey, sık sık "yineleme sayısını" "kullanılan CPU zamanı" ile eşdeğer olarak sunmamızdır, bu da daha az yineleme gerektiren bir yöntemin de daha hızlı olduğunu ima eder. Ama bu bağlandığım rakamlarla gösterildiği gibi doğru değil.
Wolfgang Bangerth

Şimdi, fikrinizi tam olarak anladım. Aynı, bir kare matrisin tersini tahmin etmek için Newton yöntemi ile de gözlemledim. Yöntem sırası arttıkça, başlangıçta işlemci süresi ve yineleme sayısı azalır, ancak sipariş arttıkça yineleme sayısı azalsa bile işlemci zamanı başlar. Cevabınız için çok teşekkür ederim.
srijan

2

Diğer cevaplarda net değilse, yineleme sayısının iyi olduğu şey büyük O argümanlarıdır.

Mutlak hız için iyi değildir, çünkü bu, yöntemler arasında büyük bir faktörle farklılık gösterebilen ortalama yineleme süresine bağlıdır.

Örneğin, dizi indekslerini hesaplama maliyetini göz ardı etme eğilimi vardır ve bu, CPU süresinin büyük bir kısmını açıklayabilir.

ADDED: Ayrıca, başka bir yerde belirttiğim gibi, yöntemin her çağrılması için genellikle bir kurulum maliyeti vardır. Daha sonra matrisler tipik olarak çok büyük değilse, bu kurulum maliyetinin kendisi CPU zamanının büyük bir kısmını oluşturabilir (böylece kaldırılması hızda büyük bir fark yaratabilir).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.