मैं लिनक्स से विंडोज तक सी ++ कोड पोर्ट कर रहा हूं। इस प्रक्रिया के दौरान मुझे पता चला है कि निम्न पंक्ति (ठीक उसी हार्डवेयर पर) 10 बार Windows के तहत धीमी लेता है ~:विंडोज बनाम लिनक्स मेमोरी आवंटन/std :: सूची कन्स्ट्रक्टर प्रदर्शन
list<char*>* item = new list<char*>[160000];
Windows पर यह ~ 10ms लेता है, जबकि लिनक्स पर यह ~ 1ms लेता है। ध्यान दें कि यह औसत समय है। इस पंक्ति को चलाने से 100 बार विंडोज़ पर ~ 1 सेकंड लगता है।
यह Win32 और x64 दोनों पर होता है, दोनों संस्करण रिलीज में संकलित किए जाते हैं, और गति QueryPerformanceCounter (विंडोज) और gettimeofday (लिनक्स) के माध्यम से मापा जाता है।
लिनक्स कंपाइलर जीसीसी है। विंडोज कंपाइलर वीएस -2010 है।
कोई विचार यह क्यों हो सकता है?
मैं देख रहा हूँ एक flamewar बढ़ती ... वैसे भी, तो आप शायद एक पाश या तो में सामान करना चाहिए, इन नंबरों शायद मतलब यह नहीं है जितनी अधिक चीजें चल रही हैं, उतनी ही 10 एमएमएस आसानी से परेशान होती है। कम से कम कुछ सेकंड की मात्रा में मापें। लेकिन फिर भी मुझे लगता है कि विंडोज़ पर स्मृति आवंटित करने के लिए तेह डिफॉल तरीका धीमा है। बस थोड़ा सा खेलें और इसे एक ऐसे पैटर्न की तरह बनाएं जो आप अपने प्रोग्राम में उपयोग करेंगे। – PlasmaHH
@EdHeal: हमने टाइम मशीन तय की है। अब आप 1 99 8 में यात्रा कर सकते हैं और वहां खुशी से रह सकते हैं। –
@ssg यकीन नहीं है। मेरी ओर से मैंने क्यूटी में 5 एमएमएस-रेज़ोल्यूशन टाइमर रखने और विंडोज़ पर ऐसा करने का कोई तरीका नहीं रखने का अपना सर्वश्रेष्ठ प्रयास किया। – UmNyobe