Konuyla ilgili bazı test testleri yapıyordum ve bu kod parçalarını yazdım:Seri kod C'de sadece bir vida dişi kullanmaktan çok daha yavaş mı?
resp_threadless [] ve resp_threaded [] global int dizileridir ve boyutları n'dir;
function();
Ve böyle ikincisini:
HANDLE hThreadArray[1];
DWORD dwThreads[1];
hThreadArray[0] = CreateThread(NULL, 0, function_th, NULL , 0, &(dwThreads[0]));
WaitForMultipleObjects(1, hThreadArray, TRUE, INFINITE);
CloseHandle(hThreadArray[0]);
Ben function_th kullanarak birden konuları arayarak biliyoruz unutmayın
int n = 100000;
void function() {
for (long j = 0; j < n; ++j) {
int count = 0;
double x = vetor[j];
while (x > 1.0) {
x = sqrt(x);
++count;
}
resp_threadless[j] = count;
}
}
DWORD WINAPI function_th(LPVOID lpParam) {
for (long j = 0; j < n; ++j) {
int count = 0;
double x = vetor[j];
while (x > 1.0) {
x = sqrt(x);
++count;
}
resp_threadless[j] = count;
}
}
Sadece onu arayarak ilk fonksiyonu benchmarked() bunu paralelleştirmeyecek, bu sadece bir test çünkü gerçekten garip sonuçlar elde ettim, bu yüzden SAME kodunu kullanarak bir iş parçacığı ve bir işlevde ne olacağını görmeye karar verdim. kullanılarak 425 ms
yaşadım benzer sonuçlar: Seri kod: 1485 ms Bir Konu numproc = 1.
Sonuçları ile
Bir Intel Atom N270 bu testve pencereler XP Çok işlemcili makineler ve hatta iş parçacığı tarafından yapılan iş paralelleştirmek için semaforlar kullanarak kod ile.
Neler olabileceğine dair bir fikri olan var mı?
DÜZENLEME
vb birden çok kez her biri, düzeni Inverting çalışan ... -> Değişiklik yok
Yükseköğretim N -> Konu biri orantılı QueryPerformanceCounter (Kullanılması daha hızlı
olduğunu) -> Değişiklik yok
İş Oluşturma Başlığı -> Vida dişi daha yavaş, daha hızlı yapmalı
Orijinal kod: http://pastebin.com/tgmp5p1G
Belki de şu anki başlığınız ('' function() 'işlevini çağırdığınız) düşük önceliğe sahiptir? – SomeWittyUsername
Tek bir program yürütmesinde iki testi sırayla mı çalıştırdınız? Ben vetor [] erişimi için veri önbellek etkisinden şüpheleniyorum. – yohjp
1. Siparişi tersine çevirmeyi denediniz mi, önce işleyin ve sonradan çalışacak mısınız? (önbellek etkisi) 2. Zamanı nasıl ölçtünüz? – Arno