2011-06-13 10 views
5

के लिए अनुकूलन उपकरण मैं विंडोज और लिनक्स सिस्टम के लिए कौन से टूल्स का उपयोग संरेखण के मुद्दों, कैश मिस और विजुअल सी ++ और जीसीसी द्वारा उत्पन्न कोड से संबंधित अन्य पैरामीटर निर्धारित करने के लिए कर सकता हूं? क्या मैं संरचनाओं के संरेखण को निर्धारित करने के लिए इन उपकरणों का उपयोग कर सकता हूं ताकि मैं कंपाइलर से उत्पन्न पैडिंग से बच सकूं?सी और सी ++

+1

संरेखण के मुद्दों को खत्म करने के लिए स्वचालित पैडिंग है ... –

+4

स्टैक ओवरफ़्लो पर आपके प्रश्नों को प्रश्न के रूप में phrased किया जाना चाहिए, कमांड के रूप में नहीं, या आप बहुत से संभावित उत्तरदाताओं को छोड़ देंगे। मैंने इसे प्रतिबिंबित करने के लिए अपनी पोस्ट संपादित की है। –

उत्तर

3

निर्धारित करने के लिए कैश याद करते हैं आप oprofile या vtune, या एक गतिशील उपकरण उपकरण, cachegrind साथ valgrind की तरह की तरह एक सीपीयू स्तरीय प्रोफाइलर, चाहता हूँ।

संरचनाओं पर संरेखण के मुद्दों की तलाश करने के लिए, DWARF डीबगिंग जानकारी वाले ऑब्जेक्ट फ़ाइलों के लिए pahole नामक एक उपकरण है।

+0

आपके उत्तर के लिए धन्यवाद। क्या पैहोल के समान खिड़कियों के लिए कोई उपकरण है? बीटीडब्लू, क्या आप vtune/kcachegrind में कैश पैरामीटर को सक्षम करने के लिए ट्यूटोरियल को विस्तृत या पॉइंट कर सकते हैं? – Kartlee

1

आप डेटा संरचनाओं में गद्दी से बचने के लिए आप अपने संरचना एक #pragma(pop) अपने संरचना की घोषणा के बाद की घोषणा से पहले जीसीसी के लिए या माइक्रोसॉफ्ट विजुअल स्टूडियो #pragma(pack(push,1)) के लिए __attribute__((__packed__)) का उपयोग कर सकता है चाहते हैं। आप एक बाइट http://msdn.microsoft.com/en-us/library/xh3e3fd0(v=vs.80).aspx पर पैकिंग के लिए या 1 बाइट सीमाओं पर पैकिंग के लिए gcc -falign-function = 8 के साथ पैकिंग के लिए माइक्रोसॉफ्ट विजुअल स्टूडियो कंपाइलर/जेपी 1 को कमांड लाइन विकल्प भी दे सकते हैं। आपका कोड बेस छोटा होगा हालांकि यह आपके प्रदर्शन पर गंभीर नकारात्मक प्रभाव डाल सकता है ...

+3

न केवल प्रदर्शन। यदि आपके पास कोई संरचना {char, int} है, तो int को सही ढंग से गठबंधन नहीं किया जाएगा, जिसका अर्थ यह होगा कि यह अब परमाणु रूप से अपडेट नहीं किया जाएगा .. – Voo

+0

+1 उस बारे में सोचा नहीं था :) – DipSwitch