2013-02-09 21 views
9

arasındaki performans farkı Performansını iyileştirmek için bir JavaScript kodlama işlevini (C#) optimize etmeye çalışıyorum (genel bir kurumsal web uygulamasının performansını iyileştirme girişimi) . .NET HttpUtility.JavaScriptStringEncode'u kullanmayı denedik, ancak veri katmanımızın öngördüğü yolu kodlamıyor (ve veri katmanını değiştirmiyoruz)..NET yöntemi (in .dll) ile yansıtılan sürüm

RedGate profiler aracını kullanarak, işlevimizin en iyi performansının, toplam sayfa yükünün yaklaşık% 8'i olduğunu belirledim. .NET işlevini kullandığımda (bunu kabul eden bir sayfada), toplam sayfa yükünün yaklaşık% 0,08'i geliyor. Hangi büyücünün çalıştıklarını görmek için .NET işlevini yansıttık ve yansıtılan kodu işleve kopyalayıp doğrudan çalıştırdığımızda% 10 civarında gerçekleştirdik.

Nedenini merak ediyorum. .NET işlevi, böyle bir performans artışı için farklı şekilde nasıl hazırlanır?

ben şimdiden özür dilerim ama kullandığımız fonksiyonunu yapıştırmak olamaz, ama ben bu soruya cevap etkisi gerektiğini sanmıyorum.

+1

İlginç. Sadece emin olun, ama bu kriterleri Serbest bırakma modunda aynı bilgisayar ve sayfa üzerinde çalıştırdınız, değil mi? Aynı testte JIT'in tüm kodu üretmeden önce oluşturduğundan emin olmak için testi birden çok kez yaptınız mı? – Cameron

+1

Asıl çalışma zamanı değişti mi, yoksa sadece genel sayfa yükünün oranı mı? Belki sayfa daha karmaşık ve toplam daha yavaştır. –

+0

ServiceStack serializer kullanmayı denedim (NuGet ile kullanılabilir); Hızlı ama yine de esnek. Performans ölçümlerine gelince, kodu bir birim testine veya benzerine ayırmayı deneyin, böylece tekrarlanan tekrarlamalar yapabilir ve çeşitli yaklaşımları kolayca karşılaştırabilirsiniz. IIS üzerinden çalışan kıyaslama kodu, çoğu diğer faktörün sonuçları çarpıtması nedeniyle genellikle ideal değildir. Dll'nin .NET ile gönderilmesinin genellikle önceden derlendiğini ve çalışma zamanında JIT'ed olması gerekmediğini unutmayın. –

cevap

1

Yansıtılan kodu .NET kitaplığındaki IL koduyla birlikte kitaplığınıza yapıştırdıktan sonra üretilen IL kodunu karşılaştırabilir misiniz? Derleme için kullanılan derleyici anahtarı, bu gibi farklılıklara neden olabilir.

İlgili konular