2010-04-01 11 views
8

कृपया सी और सी ++ आवंटक का परीक्षण करने के लिए उपयोग किए गए बेंचमार्क पर कृपया सलाह दें? निम्नलिखित पहलुओं में से किसी को संतोषजनक मानक माना जाता है:बेंचमार्क एक सी और सी ++ आवंटक का परीक्षण करने के लिए प्रयोग किया जाता है?

  1. स्पीड
  2. विखंडन
  3. कन्करेंसी

धन्यवाद!

+0

आप इसका क्या पहलू परीक्षण, गति, विखंडन आदि करना चाहते हैं? –

+0

मैंने आपके सुझाव के अनुसार संपादित किया। धन्यवाद। – Viet

उत्तर

4

यदि आप सी/सी ++ प्रोग्राम के लिए सामान्य आवंटक के बारे में पूछते हैं तो मुझे यह प्रश्न Hoard: A Scalable Memory Allocator for Multithreaded Applications मिला है जो इस प्रश्न को मानता है। यह वहाँ के रूप में अभी तक बहु allocators के मूल्यांकन के लिए मानक का कोई मानक सूट है इस दस्तावेज़

से एक उद्धरण है। हम के बारे में जानते हैं जो विशेष रूप से सर्वर वेब सर्वर 1 और डेटाबेस प्रबंधक जैसे अनुप्रयोगों के बहुप्रचारित प्रदर्शन पर जोर देते हैं। हम मानक अन्य कागजात में वर्णित है और अन्यथा प्रकाशित, दो बहु अनुप्रयोगों जो मानक में शामिल हैं (BEMengine (लार्सन और कृष्णन [22] और MicroQuill, Inc से shbench बेंचमार्क [26] से लार्सन बेंचमार्क) चुना [7] और बार्न्स-झोपड़ी [1, 2]), और लिखा है हमारे स्वयं के कुछ microbenchmarks स्मृति आवंटन की विभिन्न पहलुओं प्रदर्शन (तनाव threadtest, सक्रिय-झूठी, निष्क्रिय-गलत)।

यह पेपर पुराना है। हालांकि मैंने हाल ही में एचपी-यूएक्स (MallocNextGen) के लिए आवंटन देखा है और एचपी यह भी सुनिश्चित नहीं कर सकता कि यह सभी संभावित अनुप्रयोगों के लिए अच्छा है। इसे कहते हैं:

नई संभाजक आम तौर पर अनुप्रयोगों के प्रदर्शन में सुधार करने की उम्मीद है। हालांकि, कुछ अनुप्रयोग हो सकते हैं जिसके लिए प्रदर्शन खराब हो सकता है। इसलिए उन बेंचमार्क करने के लिए डिफ़ॉल्ट स्मृति संभाजक के साथ अपने अनुप्रयोगों libc में और संभाजक साथ libmallocng में एक उत्पादन वातावरण में नई संभाजक उपयोग करने से पहले सलाह दी जाती है।

गति और समेकन के लिए मेरा स्वयं का अनुभव यह है कि आपको दो अलग-अलग आवंटकों की तुलना करने के लिए अपने स्वयं के कार्यक्रम के प्रदर्शन को मापना होगा। यदि हम लिनक्स के बारे में बात करते हैं तो आप विभिन्न आवंटकों को लोड करने के लिए एलडी_PRELOAD का उपयोग कर सकते हैं।

+0

+1। हाँ, यदि कोई मानक मानक नहीं है, तो हमें किस आधार पर परिणामों को समझना और समझना चाहिए? – Viet

+0

जहां तक ​​मैं एक विचार समझता हूं, अपने स्वयं के एप्लिकेशन प्रदर्शन को मापना है। दूसरी ओर आप आवंटकों की तुलना करने के लिए वास्तविक कार्यक्रमों और स्वयं के परीक्षणों का एक सेट चुन सकते हैं। –

5

आप nedmalloc डाउनलोड कर सकते हैं और इसके साथ अपने आवंटक की तुलना करने का प्रयास कर सकते हैं। इसमें स्रोत कोड के साथ test.c नामक एक परीक्षण है, जिसे आप अपने आवंटक के अनुसार पुनः लिख सकते हैं।

+0

+1 धन्यवाद अरक! – Viet

5

मैंने कुछ साल पहले खुद को कई आवंटकों का परीक्षण किया और मेरा अनुभव यह है कि परिणाम सभी प्रकार के परीक्षण पर निर्भर करते हैं।आप कुछ मानक खुद लिखने के लिए चाहते हैं, तो निम्न स्थितियों पर विचार करें:

  • एक भी आकार की स्मृति के बहुत सारे आवंटन, तो मुक्त कर यह सब
  • विभिन्न आकारों की स्मृति के बहुत सारे आवंटन, तो यह सब
  • मुक्त
  • स्मृति के केवल कुछ ब्लॉक आवंटित करें, उन्हें मुक्त करें, और इस लूप को कई बार दोहराएं (समान आकार के ब्लॉक और विभिन्न आकार के ब्लॉक के लिए दोहराएं)
  • विभिन्न आकारों की बहुत सारी मेमोरी आवंटित करें, इसका आधा हिस्सा (उदाहरण के लिए यहां तक ​​कि यहां तक ​​कि यहां तक ​​कि यहां तक ​​कि यहां तक ​​कि आवंटन), फिर लूप
  • उपयोग में आवंटित और मुक्त मेमोरी दो धागे समानांतर
  • उपयोग में स्मृति को आबंटित करने के लिए तीन, चार, पांच, ... धागे समानांतर

में स्मृति को आबंटित करने आप देखेंगे कि परिणाम हर परीक्षा के लिए अलग होगा। आवंटक जो एक परिस्थिति में बहुत अच्छे हैं, अन्य स्थितियों में खराब हो सकते हैं।

प्रैक्टिस में इसका मतलब है कि यह आपके आवेदन में लाइव/यथार्थवादी स्थिति में परीक्षण करना सबसे अच्छा है।

+0

+1 अच्छा पैट्रिक लगता है। – Viet

संबंधित मुद्दे