SORU
14 Aralık 2008, Pazar


C# Decimal veri türü performans

C finansal bir uygulama yazıyorum# performans (hız gibi) önemli olduğu. Finansal bir uygulama çünkü Ondalık veri türü yoğun bir şekilde kullanmak zorunda.

Kod elimden geldiğince bir profiler yardımı ile optimize ettim. Ondalık kullanmadan önce, her şeyi Çift veri türü ile yapıldı ve hızını birkaç kat daha hızlı. Ancak, Çift ikili doğası nedeniyle bir seçenek, birden çok işlemi boyunca hassasiyet hataları bir sürü neden değil.

C ile ben herhangi bir ondalık kütüphane arayüzü var# benim yerel Ondalık veri türü üzerinde bir performans artışı verebilir .NET?

Zaten aldığım cevaplara göre, yeterince açık olduğumu farkettim, burada bazı ek bilgiler:

  • App muhtemelen (yani kullanarak Ondalık yerine Çift zaman olduğu gibi hızlı bir rüya olurdu) çok hızlı olmak zorunda. Çift yaklaşık 15 kat daha hızlı Ondalık daha işlemleri temel donanım olarak.
  • Donanım zaten üst seviye (Çift Xenon on Dört Çekirdekli koşuyorum) ve uygulama iş parçacığı kullanır, CPU kullanımı her zaman makine üzerinde 0'dür. Ayrıca, uygulama 32 bit üzerinde ölçülü bir performans avantajı sağlayan 64-bit modunda çalışıyor.
  • Aklı (bir aydan fazla bir buçuk optimize; ister inanın ister inanmayın, Şimdi yaklaşık alır. bu noktadan sonra optimize ettim 1/5000 ne kadar zor oldu aynı hesaplamalar kullanılan bir referans Başlangıçta); bu optimizasyon ile ilgili her şey: dize işleme, G/Ç, veritabanı erişimi ve dizinler, bellek, döngüler, değişen bazı şeyler de yaptı, hatta kullanarak, bir "geçiş" varsa" her yerde oldu. Profiler şimdi kalan performans suçlu Ondalık veri türü operatörler üzerinde olduğunu açıkça gösteriyor. Başka bir şey zaman önemli bir miktar ekleyerek.
  • Burada bana inanmak zorundasın: muhtemelen c#.net alanda Gidebileceğim kadar uygulama optimize etmek için gittim ve gerçekten bugünkü performansı beni hayrete düşürdü. Şimdi bir şey için Ondalık performans iki katına yakın iyileştirmek için iyi bir fikir arıyorum. Bu sadece bir rüya, ama ben mümkün olan her şeyi düşündüm emin olmak istedim biliyorum. :)

Teşekkürler!

CEVAP
14 Aralık 2008, Pazar


uzun veri türü kullanabilirsiniz. Tabii, orada kesirler saklamak için mümkün olmayacaktır, ama sen kilo yerine mağaza peni için uygulamanızın kodu, iyi olacaksın. Doğruluk uzun veri türleri için 0'dür, ve çok sayıda (64-bit uzunluğunda bir türü) ile çalışmadığınız sürece sorun yok.

Eğer saklamak peni görev varsa, o zaman bir sınıf bir tamsayı sarın ve kullanın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alexander Johnson

    Alexander Jo

    26 Temmuz 2008
  • androidandme

    androidandme

    10 Mart 2009
  • FullMag

    FullMag

    15 ŞUBAT 2007