तो, मैं थ्रेड के साथ कुछ बेंचमार्क परीक्षण कर रहा था, और मैंने कोड के इन टुकड़े लिखे थे:सीरियल कोड सी में केवल एक धागे का उपयोग करने से बहुत धीमी है?
resp_threadless [] और resp_threaded [] वैश्विक int arrays हैं और उनका आकार n है;
function();
और दूसरा एक इस तरह::
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]);
ध्यान रखें मुझे पता है कि कि function_th का उपयोग कर एक से अधिक थ्रेड बुला
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;
}
}
मैं सिर्फ उसे फोन करके पहले समारोह बेंचमार्क() इसे समानांतर नहीं करेगा, यह सिर्फ एक परीक्षण है क्योंकि मुझे वास्तव में अजीब परिणाम मिल रहे थे, इसलिए मैंने यह देखने का फैसला किया कि एक थ्रेड के साथ क्या होगा और एक ही कोड का उपयोग करके एक फ़ंक्शन होगा। का उपयोग करते हुए इसी तरह के परिणाम 425 एमएस
मैं लिया है: सीरियल कोड: 1485 एमएस एक धागा NUMPROC = 1.
परिणाम के साथ
मैं एक इंटेल एटॉम N270 में यह परीक्षण किया है, और खिड़कियों XP मल्टीप्रोसेसर मशीनें, और धागे द्वारा किए गए काम को समानांतर करने के लिए सेमफोर का उपयोग करके कोड के साथ भी।
क्या किसी को भी पता चल सकता है कि क्या हो सकता है?
संपादित
, आदेश Inverting कई बार हर एक, आदि चल रहा है ... -> कोई परिवर्तन नहीं
उच्चतर एन -> थ्रेड एक आनुपातिक भी तेजी से
QueryPerformanceCounter (का उपयोग करना है) -> कोई परिवर्तन नहीं
धागा निर्माण ओवरहेड -> पिरोया एक भी धीमी, नहीं तेजी से करना चाहिए
01,235,मूल कोड: http://pastebin.com/tgmp5p1G
शायद आपका वर्तमान धागा (जिसमें आप 'फ़ंक्शन() 'का आह्वान करते हैं) कम प्राथमिकता है? – SomeWittyUsername
क्या आपने एक प्रोग्राम निष्पादन में अनुक्रमिक रूप से दो परीक्षण चलाए? मुझे 'vetor []' पहुंच के लिए डेटा कैश प्रभाव पर संदेह है। – yohjp
1. क्या आपने ऑर्डर को रिवर्स करने का प्रयास किया है, पहले थ्रेड और फ़ंक्शन के बाद? (कैश प्रभाव) 2. आपने समय को कैसे माप लिया? – Arno