क्या कोई इस छोटे कार्यक्रम के साथ क्या हो रहा है समझा सकता है?अंकगणितीय परिचालनों के साथ असमान प्रक्रिया समय [सी]
#include<stdio.h>
int main()
{
float a=0.577;
float b=0.921;
float c;
int i;
for (i=0;i<100000000;i+=1){
c=0.7*a-0.2*b;
//a=0.145*c+2.7*b;
}
printf ("%.3f\n",c);
}
नोट, एक पंक्ति टिप्पणी की गई है।
मैंने लाइन के बिना इसे पहले और फिर लाइन के साथ संकलित किया। (प्रयुक्त gcc -O2 ...
)। और प्रसंस्करण समय मापा। मैं यह जानकर बहुत हैरान था कि निष्पादन समय 0.001s
बनाम 2.444s
था। और यह ज्यादा समझ में नहीं आता है। या इसके बजाय, इसके पीछे कुछ तर्क होना चाहिए।
क्या आप कृपया बता सकते हैं कि क्या हो रहा है और इस समस्या को कैसे कम किया जाए?
मैं ऐसे प्रोग्राम पर काम करता हूं जो बड़ी मात्रा में डेटा संसाधित करता है और ऐसा लगता है कि मैं वहां एक ही प्रदर्शन समस्या में भाग लेता हूं।
मैं फ्लोट से पूर्णांक में स्विच करने पर विचार कर रहा था लेकिन ऐसा लगता है कि पूर्णांक के साथ यह वही व्यवहार करता है।
संपादित करें: अंत में समाधान मामूली और तार्किक था। तो मैं सभी उत्तरों और स्पष्टीकरण के लिए धन्यवाद!
क्या आपने जेनरेट किए गए कोड को देखा? –
वैसे भी आप वास्तव में क्या कर रहे हैं? मुझे ऐसी निर्भरता श्रृंखला में कुछ सुधार करने के लिए बहुत कुछ नहीं दिख रहा है ... (कौन सा बीटीडब्ल्यू, बहुत तेज़ी से अभिसरण लगता है। मुझे लगता है कि उच्च पुनरावृत्ति गिनती सिर्फ इसे टेस्ट करने योग्य बनाने के लिए थी।) – Mysticial
'ए' घोषित करने का प्रयास करें 'अस्थिर' के साथ। – jxh