Hızlı Geçmiş: HTTPListener'ın sözde büyük bir performans sergilediği http.sys çekirdek sürücüsünü kullandığını anlıyorum. Ancak, yönetilen bir http sunucusu ile yerel bir vC++ sunucusu arasında bazı performans kriterleri yaparken, yerel tarafta yaklaşık 15 MB/s artış görüyorum. Test kurulumu, 1gb nics ile yeni formatlanmış iki laboratuvar makinesidir. Yerli tarafında yaklaşık 100 MB/s olan ve yaklaşık% 95'e yakın olan HTTPListener kullanırken ~ 94 MB/s (max 100) görüyorum.HTTPListener vs Yerel HTTP performansı
testler
- hem aynı yükü (~ 120 mb) Ben devre dışı bıraktık Yönetilen için her iki sunucuyu
- test etmek için aynı yönetilen müşteri uygulamasını kullanıyorum
- göndermek, elma için elma vardır Nagle (Ama her iki yolu da test ettik, sonuç aynı)
- Bir grup test çalıştırıyorum ve iş hacmini hesapladım, ilginç not, Yönetilen std sapmanın daha yüksek olması, yani sonuçların yerel ile karşılaştırıldığında tutarlı olmamasıdır.
Genel olarak, HTTPListener aracılığıyla yerel sunucunun 110 MB/sn'lerine yaklaşabilmem gerektiğini umuyorum, 15 MB/sn oldukça maliyetli görünüyor.
Sorular: 1. Eksik olduğum yönetilen başka optimizasyonlar var mı? 2. Potansiyel darboğazlar nelerdir, reflektör üzerinden HTTPResponseStream'e baktım, bazı marşlama devam ediyor gibi görünüyor, ama göze batan sorun yok, Aslında yığınlama kullanıldığında, yerel sunucumla aynı bir yığın dizisi üretiyor.
herhangi bir fikir takdir edilmektedir,
Hangi API'ları C++ uygulamanızı geliştirdiniz? –
Yönetilen uygulama için daha yüksek sapma, çöp toplama nedeniyle olabilir? Çok sayıda nesne oluşturuyorsunuz/terk ediyor musunuz? –
"HttpListener" sınıfı HTTP.SYS kullanıyor kim? IIS yapar ama değil HttpListener ', aslında eğer ilginç olurdu. Bu yüzden, inanırsanız, lütfen referansı sağlayın. – Aliostad