Ş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?
0
A
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
- 1. Bir kaydı bir sorguyla sınırlandırır Performansı iyileştirir
- 2. Statik sınıfları, List
- 3. sbt-assembly: test sınıfları dahil
- 4. Doxygen statik sınıfları belgelemiyor mu?
- 5. php: Bir değişken üzerinden Statik Sınıfları Çağırma
- 6. Cloudflare ve Incapsula gibi hizmetler, aslında Windows Azure'da barındırılan web sitelerinin performansını iyileştirir mi?
- 7. .cpp dosyası dahil mi?
- 8. Swift kütüphanesine statik kütüphane nasıl dahil edilir?
- 9. sqlite3 görünümler performansı etkiler mi?
- 10. 10,000 statik küp için OpenGL performansı
- 11. Erişim değiştiricileri performansı etkiler mi?
- 12. (yöntemler statik unutmayın) Ben sınıfları şu var kalıtsal statik yöntemle
- 13. Ninject ile sınıfları statik yöntemlerle nasıl işlerim?
- 14. Başlık dosyası dahil etme statik analiz araçları?
- 15. Tasarıma etki etmeden bir div sağa kaydırın
- 16. Son yürütülebilir dosyaya dahil edilmeyen yöntemler dahil mi?
- 17. "Çalışma zamanı temalarını etkinleştir", performansı etkiler mi?
- 18. C# de yardımcı yöntemler: Statik mi yoksa statik olmayan mı?
- 19. Neden bir ClassInitialize yöntemi statik mi olmalı?
- 20. CALayer performansı vs UIImageView performansı
- 21. Test sınıfları ve test bağımlılıklarını sbt asssembly'a nasıl dahil edilir
- 22. iOS statik mi yoksa dinamik bir çerçeve mi?
- 23. Bir kıvılcımdaki işlemi nasıl ayırt edebilmek bir dönüşüm mü yoksa bir eylem mi?
- 24. Tutuklama, belirli sınıfları kullanmanıza engel olabilir mi?
- 25. Enjeksiyon, statik yöntemle yapılabilir mi?
- 26. statik iç sınıflara alternatif olabilir mi?
- 27. HTML dosyalarına LaTeX formülleri dahil mi?
- 28. Twig'i birden fazla diziyle mi dahil ediyorsunuz?
- 29. node.js'de bir akışın performansı nedir?
- 30. .NET 2.0, .NET 3.5 yükleyicisine dahil mi?
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. –
Ö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 * –
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) –