मैं कोड का एक टुकड़ा जिसमें एक डेटा लिखा है। पूर्व: temp [4096]; अस्थायी [0] = बफ [0] + बफ [1] + बफ [2]; ... 4096सी कोड स्मृति पहुँच/पूर्वक्रय
फिर एक हिस्टोग्राम कोड का उपयोग कर अस्थायी के परिणामों से उत्पन्न होता है जब तक:
for(i = 0; i < 4096; i++)
counter[temp[i]]++;
हिस्टोग्राम क्रमबद्ध किया जाता है (बुलबुला तरह) और फिर शीर्ष 8 सबसे आवर्ती मूल्यों लिया जाता है। कोड लिनक्स कर्नेल में चलाया जाता है (2.6.35)
समस्या का सामना करना पड़ रहा हूँ कि अगर मैं छँटाई हिस्से को हटाने, बार कोड निष्पादित करने के लिए ले जाया बहुत तेजी से (6 माइक्रोसेक अपने लैपटॉप का उपयोग कर मापा पर है gettimeofday func)। लेकिन सॉर्टिंग शुरू करने के बाद, प्रक्रिया काफी हद तक धीमी हो जाती है (44 माइक्रोसॉसी)। सॉर्टिंग फ़ंक्शन में 20 माइक्रोसॉक्स लगते हैं, मैं समझ नहीं पा रहा हूं कि समय इतना बढ़ रहा है। मैंने कैशग्रींड का उपयोग करके एक मेमोरी विश्लेषण किया, परिणाम सामान्य हैं और मैंने प्रीपेशन को अक्षम करने का भी प्रयास किया है लेकिन अभी भी यह कोई फर्क नहीं पड़ता है। अगर कोई यहां मेरी मदद कर सकता है। धन्यवाद!
क्यों बबल प्रकार? क्यों नहीं 'qsort() '? –
8 शीर्ष मान प्राप्त करने के लिए आपको पूर्ण प्रकार की आवश्यकता नहीं है। जैसे हेप्सोर्ट का उपयोग एन शीर्ष मान प्राप्त करने के लिए किया जा सकता है (यदि इसे कार्यान्वित किया जाता है) और यह पूर्ण प्रकार से तेज़ होगा। – osgx
या यहां तक कि एक चयन प्रकार http://en.wikipedia.org/wiki/Selection_sort - जिसे शीर्ष 8 मान प्राप्त करने के बाद रोक दिया जा सकता है। – osgx