2016-04-14 55 views
0

Şu an bir tasarım kalıpları kursu içerisindeyim ve profesörüm, tüm hesaplamaları yapmak için statik işlevlere sahip statik bir sınıfın kullanıldığı ve daha sonra hesaplanacak verilerin depolanması için ayrı nesne sınıflarına sahip olmanın bazı durumların olabileceğini belirtti. en verimli Bu yaklaşım ne kadar pratik? Statik sınıf ve nesneler arasında sıkı bir bağlantı olacağını biliyorum, ancak bu, hesaplamalar uzunsa size gerçekten bir performans artışı verir mi?Statik sınıfları bir tasarıma dahil edebilmek performansı iyileştirir mi?

+2

Bu, her bir dilin ve/veya derleyicinin uygulanmasına bağlıdır. En iyi ihtimalle tek bir işaretçi dereference kaydedin. Avantajlar, örneğin hemen hemen tüm dillerde bulunan paralelleştirme ve vektörleme özelliklerinin kullanılmasıyla karşılaştırıldığında önemsizdir. –

+0

Örneğin, C# 'someArray.AsParallel() 'da Sum()', dörtlü bir işlemcideki 'someArray.Sum()' dan 4 kat daha hızlı çalışabilir. Vector4'teki vektörizasyon fonksiyonlarını kullanarak, bir seferde 4 adet şamandıra ile başa çıkmak için, çekirdek başına * hızını dört katına çıkarabiliriz * –

+0

I kodu çoğunlukla Java ve C# 'dadır. Paralelleştirme çoklu iş parçacığı ile aynı mıdır? (Daha önce hiç paralellik ya da vektörleştirmeyi hiç duymadım) –

cevap

1

Statik işlev çağrıları genellikle hiçbir nesne başvurusunun geçirilmesi gerekmediğinden daha az yüke sahiptir. Bu, önemli bir performans farkına neden olursa kullanım durumunuza ve çevreye göre değişir. Benim tecrübeme göre, bu olası değildir.

Yine de, yalnızca performans açısından değil, tek başına işlevlerin veya statik işlevlerin bir tasarıma dahil edilmesinin genellikle iyi bir şey olduğuna inanıyorum. Bütün fonksiyonel programlama paradigması yapı taşları olarak fonksiyonlarını yerine sınıflarını kullanarak dayanır. Değişebilir durumu azaltmaya, testi basitleştirmeye ve en azından teorik olarak otomatikleştirilmiş paralelleşmeyi desteklemeye yardımcı olur.

İlgili konular