Sorumluluk reddi: Aşağıdaki ifadeler arasında bazı yanlış anlamalar olabilir, lütfen yanlış yazılmışsa kodumu kodumun C# olarak işlendiğimde noktaya yazdığım an arasında sıfırlar veBellek düzeni optimizasyonu C#
sorulara (olanlar bağlantılıdır) şunlardır:
Ben optimizasyon teknikleri kullanıp olsun benim veri yapıları ve/veya benim veri manipülasyon uygulanması, bir performans etkisi olacak C# herhangi bir yolu var mı ?
Derleyici, çıktı alırken ne yapar, güvenilir midir? Anlamı: Verilerimi yaparsam ILA'da SOA olacak mı? Her zaman?
JIT, IL okuduğunda veri yapmam ne olur? değişti mi İşlemcime uyması için otomatik olarak optimize edilmiş mi?
Ben bu konuşma yerli kod hedeflediğini biliyoruz ve yerel kodda veri düzeni vs işlemci düzeni özelliklerini anlatıyor.
Ayrıca C# derleyicisini biliyorum ve JIT derleyicisi bu konularla ilgili olarak benim için işleri optimize eder. optimizasyon bu tür benim perfs üzerinde etkisi eğer
Temelde acaba:
- SOA yerine AOS ait
- Vektörler erişim desenleri (bellekte bitişik erişilmesine)
- vb .. ad ...
Oyun geliştirmede çalışıyorum ve performans çok önemli, büyük miktarda veriyi manipüle ediyoruz ve saniyede en az 24 kere yapmamız gerekiyor.
-
: GC 300ms veya bellek için malzeme tüm ı ı okumak şeyler hakkında referans için 3000 farklı nesneler
Excellent Eric Lippert article about structs and values types in C# (eğer değerler türleri bir tedavi için konum C# yığın her zaman düşünüyorsanız lütfen oku)
Excellent video about PerfView to track your GC behaviour and it's impact on your perfs
That SO question about Best practices to optimize memory in C# (ve daha da önemlisi 's cevabı)
arasında çarpışmalar algılamak için çalışıyorum yerde tahsis ama gerçekten soruya cevap vermedi/erişilebilir yapmak
Ama o işlemci ve veri düzeni uygulamasına performans maliyeti göreceli cevap verme.
dediğinizde:
ayrıca Hans cevap verdiğini peşine için "Sen SOA takip edebilir ama bu yardımcı olmuyor Evet, programınız, çünkü bütün bu yapı kopyalama yavaşlatmak ve yapar olacaktır. böylece deterministik bir şekilde ama yağmur yağmaz.Her ikisinin de en kötüsünü, yavaş bir programı ve aynı durakları alırsınız. "
Bu, programımın SOA'dan hiçbir fayda sağlamadığı anlamına gelmiyor. Daha hızlı (potansiyel olarak) olacak çünkü verilerimi işlemeye yardımcı olacak. GC'nin kendisi üzerinde hiçbir etkisi olmayacaktır. Diğer bir şey şudur: Veri düzenimde SOA veya başka gelişmeler yapmazsam, derleyici bunu benim için düzeltmez mi? Derleyiciye güvenemiyorum. Bu tür şeylerle uğraşmak
Bu düzeyde şeyler hakkında konuşuyorsanız, C# (veya herhangi bir yönetilen bellek ortamı) büyük olasılıkla sizin için uygun değildir. Ama sonra tekrar ... Gerçek Zamanlı Bilgi İşlem, Finansal Hesaplama, Büyük Veri'de çalışıyor musunuz? – Aron
Gerçek Zamanlı C#, bu kontrol seviyesini vermek için düzgün bir şekilde kullanılabilir umarım –
Düzen, temel olarak değiştirilmez. – harold