2012-07-13 9 views
5

में garbage संग्रह को कैसे प्रोफाइल करें मैं एक गैर-रेल अनुप्रयोग में जीसी प्रोफाइल करने की कोशिश कर रहा हूं, अधिमानतः वाईएआरवी रूबी का उपयोग कर रहा हूं।रूबी

perftools.rb मुझे बता रहा है कि मेरे अधिकांश CPU समय को garbage_collector (6061 (61.4%) में खर्च किया जाता है।

मैं यह भी प्राप्त करने में सक्षम हूं कि perftools.rb के साथ कौन सी विधियां बनाई गई हैं। कुछ तरीकों से दूसरों की तुलना में अधिक वस्तुएं पैदा होती हैं, लेकिन यह बेहद खराब नहीं है।

मैं यहां से कहां से जाऊं? क्या यह अधिक विस्तृत जानकारी प्राप्त करना संभव है कि यह जीसी करने में इतना समय क्यों लगा रहा है? क्या यह देखना संभव है कि ऑब्जेक्ट से छुटकारा पाने में समय बिताया गया है, या क्या यह खर्च किया जाता है कि क्या ऑब्जेक्ट को कचरा इकट्ठा किया जाना चाहिए या नहीं?

मेरे पास ओएस एक्स शेर, विंडोज 7 और उबंटू 12.04 तक पहुंच है।

उत्तर

1

ओएसएक्स पर आपके पास dtrace है। YARV रूबी में dtrace प्रदाताओं हैं।

आप जी सी से संबंधित जांच है कि आप उपयोग कर सकते हैं की एक जोड़ी है:

जीसी अंत जीसी शुरू जीसी मार्क-शुरू जीसी निशान अंत जीसी झाडू-शुरू gc- स्वीप-एंड

मुझे लगता है कि वे आपके प्रोग्राम में जीसी क्या कर रहे हैं यह जानने में मदद कर सकते हैं। इस फ़ाइल को देखने के लिए देखें कि उनका उपयोग कैसे करें: https://github.com/tenderlove/ruby/blob/probes/test/dtrace/test_gc.rb

और अधिक स्पष्टीकरण के लिए इस पोस्ट: http://tenderlovemaking.com/2011/06/29/i-want-dtrace-probes-in-ruby.html

वहाँ एक बग माणिक http://bugs.ruby-lang.org/issues/2565 में खोला गया है जहाँ आप एक पैच उन जांच के लिए रूबी के लिए लागू करने के लिए या आप https://github.com/tenderlove/ruby/tree/probes जहां पैच पहले से ही लागू किया जाता है का उपयोग कर सकते पा सकते हैं।

उम्मीद है कि यह

में मदद करता है