SORU
6 Mart 2011, Pazar


ThreadPools veya Görev IO bağlı işlemler için Kütüphane Paralel kullanmalıyım

Biraz toplayıcı benim projelerinden biri olarak, beslemeleri ve web podcast ben ayrıştırmak.

Eğer sıralı yaklaşım, kaynakların çok sayıda göz önüne alındığında, uzunca bir süre hepsi (ağ sorunları ve benzer şeyler yüzünden) işleme alır;

foreach(feed in feeds)
{
   read_from_web(feed)
   parse(feed)
}

Eşzamanlılık uygulamak ve eğer temelde ThreadPools ile çalışan iş parçacığı işlemi için kullanmanız gereken karar veremedi ya da sadece VUK sıralanmış olsun güvenmek istiyorum.

Kesin ThreadPools çalışan iş parçacığı ile bu işi benim için idare edecek ve senden beklediğim (ve çok çekirdekli İŞLEMCİ ortamlarda, diğer çekirdekler de kullanılacaktır) alacağım.

concurrency

Ama yine de yöntemi tavsiye olarak VUK da dikkate almak istiyorum ama biraz endişeliyim. Öncelikle bu TRAFİK ThreadPools kullanır ama karar ek katman ekler biliyorum. Çoğunlukla tek çekirdekli bir ortam mevcut durumu hakkında endişeliyim. Eğer yanlış değilsem VUK başında sayıda işçi iş parçacığı sayısı eşit CPU çekirdeği ile başlar. Ben TRAFİK korkusu benzer sonuçlar elde benim için yaklaşım IO bağlı durumda sıralı.

IO-bağlı işlemleri (web üzerinden davamı kaynakları okuma) çok iyi ThreadPools kullanın ve olayları kontrol altında tutmak için, ya da sadece daha iyi TRAFİK güveniyor mu? VUK da IO bağlı senaryolarda kullanılabilir mi?

Güncelleme: Benim asıl endişem butek çekirdekli bir İŞLEMCİçevre VUK sadece sıralı yaklaşım gibi davranır ya da hala eşzamanlılık sunacak? Zaten Parallel Programming with Microsoft .NET book okuyorum ama bunun için kesin bir cevap bulamadım.

Not: Bu oldukça yanlış ifade edilmiş olan önceki soruma [ Is it possible to use thread-concurrency and parallelism together? ] yeniden bir cümle.

CEVAP
7 Mart 2011, PAZARTESİ


Ben onun yerine bu testleri yazmak ve pratik verileri görmek için karar verdi.

Efsane Test Edin

  • Itr: Yineleme
  • Seq: Ardışık Yaklaşım.
  • PrlEx: Paralel Uzantıları Paralel.Dosyalarda grup
  • VUK: Görev Paralel Kitaplığı
  • TPool: Havuzu

Test Sonuçları

Tek Çekirdekli [Windows 7-32] CPU -- VMWare altında çalışır

Test Environment: 1 physical cpus, 1 cores, 1 logical cpus.
Will be parsing a total of 10 feeds.
________________________________________________________________________________

Itr.    Seq.    PrlEx   TPL     TPool
________________________________________________________________________________

#1      10.82s  04.05s  02.69s  02.60s
#2      07.48s  03.18s  03.17s  02.91s
#3      07.66s  03.21s  01.90s  01.68s
#4      07.43s  01.65s  01.70s  01.76s
#5      07.81s  02.20s  01.75s  01.71s
#6      07.67s  03.25s  01.97s  01.63s
#7      08.14s  01.77s  01.72s  02.66s
#8      08.04s  03.01s  02.03s  01.75s
#9      08.80s  01.71s  01.67s  01.75s
#10     10.19s  02.23s  01.62s  01.74s
________________________________________________________________________________

Avg.    08.40s  02.63s  02.02s  02.02s
________________________________________________________________________________

Tek Çekirdekli [Vista] CPU -- VMWare altında çalışır

Test Environment: 1 physical cpus, NotSupported cores, NotSupported logical cpus.
Will be parsing a total of 10 feeds.
________________________________________________________________________________

Itr.    Seq.    PrlEx   TPL     TPool
________________________________________________________________________________

#1      10.79s  04.05s  02.75s  02.13s
#2      07.53s  02.84s  02.08s  02.07s
#3      07.79s  03.74s  02.04s  02.07s
#4      08.28s  02.88s  02.73s  03.43s
#5      07.55s  02.59s  03.99s  03.19s
#6      07.50s  02.90s  02.83s  02.29s
#7      07.80s  04.32s  02.78s  02.67s
#8      07.65s  03.10s  02.07s  02.53s
#9      10.70s  02.61s  02.04s  02.10s
#10     08.98s  02.88s  02.09s  02.16s
________________________________________________________________________________

Avg.    08.46s  03.19s  02.54s  02.46s
________________________________________________________________________________

Çift Çekirdekli İŞLEMCİ [Windows 7-64]

Test Environment: 1 physical cpus, 2 cores, 2 logical cpus.
Will be parsing a total of 10 feeds.
________________________________________________________________________________

Itr.    Seq.    PrlEx   TPL     TPool
________________________________________________________________________________

#1      07.09s  02.28s  02.64s  01.79s
#2      06.04s  02.53s  01.96s  01.94s
#3      05.84s  02.18s  02.08s  02.34s
#4      06.00s  01.43s  01.69s  01.43s
#5      05.74s  01.61s  01.36s  01.49s
#6      05.92s  01.59s  01.73s  01.50s
#7      06.09s  01.44s  02.14s  02.37s
#8      06.37s  01.34s  01.46s  01.36s
#9      06.57s  01.30s  01.58s  01.67s
#10     06.06s  01.95s  02.88s  01.62s
________________________________________________________________________________

Avg.    06.17s  01.76s  01.95s  01.75s
________________________________________________________________________________

Quad-Core [Win 7-64] -- HyprerThreading CPU -- Destekledi

Test Environment: 1 physical cpus, 4 cores, 8 logical cpus.
Will be parsing a total of 10 feeds.
________________________________________________________________________________

Itr.    Seq.    PrlEx   TPL     TPool
________________________________________________________________________________

#1      10.56s  02.03s  01.71s  01.69s
#2      07.42s  01.63s  01.71s  01.69s
#3      11.66s  01.69s  01.73s  01.61s
#4      07.52s  01.77s  01.63s  01.65s
#5      07.69s  02.32s  01.67s  01.62s
#6      07.31s  01.64s  01.53s  02.17s
#7      07.44s  02.56s  02.35s  02.31s
#8      08.36s  01.93s  01.73s  01.66s
#9      07.92s  02.15s  01.72s  01.65s
#10     07.60s  02.14s  01.68s  01.68s
________________________________________________________________________________

Avg.    08.35s  01.99s  01.75s  01.77s
________________________________________________________________________________

Özetleme

  • Tek çekirdekli bir ortam ya da çok çekirdekli bir Paralel Uzantıları üzerinde çalışacak olsa da, VUK ve Havuzuaynı şekilde davranır ve yaklaşık sonuçlar verir.
  • HalaVUKvardıravantajlarıkolay gibiözel durum işleme, iptal destekleyin Görev sonuçlarını döndürmek için yeteneği. Ama Paralel Uzantıları da başka bir alternatif.

Kendi üzerinde test yapıyor

13 ** kaynak kodunu indirin ve kendi üzerinde çalıştırabilirsiniz. Eğer sonuçlar sonrası, onları da ekleyeceğim.

Güncelleme: kaynak linki Düzeltildi.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FailArmy U

    FailArmy U

    29 AĞUSTOS 2009
  • parlophone

    parlophone

    28 ŞUBAT 2006
  • Ty Moss

    Ty Moss

    20 Kasım 2007