2012-04-06 12 views
5

के साथ बेंचमार्किंग कोड मैं अपने प्रोग्राम में किसी फ़ंक्शन को बेंचमार्क करने के लिए गो पैकेज "टाइम" का उपयोग करने का प्रयास कर रहा हूं। चारों ओर खोज रहे थे, और लोग समय का उपयोग करने लगते हैं। नैनोसेकंड्स() - लेकिन मुझे लगता है कि यह फ़ंक्शन समय पैकेज में नहीं है?स्टॉपवॉच या इसी तरह के

मुझे टाइमर शुरू करने और रोकने और मूल्य को मुद्रित करने का एक आसान तरीका है।

+0

मेरा मानना ​​है कि फ़ंक्शन अब समय के बराबर है.अब()। यूनिक्स नैनो() '। – Ashe

उत्तर

9

उपयोग आपकी * _test.go अंदर testing पैकेज के मौजूदा कार्यक्षमता:

func BenchmarkMyFunc(b *testing.B) { 
    for i := 0; i < b.N; i++ { 
     myBecnhmarkedFunction() 
    } 
} 

और आह्वान go test -bench RE (आरई B की तरह, सत्ता पक्ष का चयन करने के रूप में यह मतलब है *B* एक regexp है) आम तौर पर पैकेज के अंदर/उपकरण निर्देशिका

या स्पष्ट रूप से आपके कोड में किसी भी स्थान से - Benchmark फ़ंक्शन का उपयोग करें।

+1

उत्तर के लिए धन्यवाद! आपके उत्तर को पढ़ने से ठीक पहले मुझे गो के टाइम पैकेज का उपयोग करने का एक आसान उदाहरण मिला, जो मेरे लिए काफी काफी था। मैं बेंचमार्किंग समारोह को भी देखूंगा। 't0: = time.अब() महंगा कॉल() t1: = time.अब() fmt.Printf (" कॉल को चलाने के लिए% v लिया गया। \ N ", t1.Sub (t0))' – shaz

+1

वह दृष्टिकोण ठीक है/अच्छा/सटीक पर्याप्त 'महंगा कॉल() 'पर्याप्त लंबे समय तक निष्पादित करने के लिए पर्याप्त है, जैसे कि मशीन समय संकल्प की तुलना में परिमाण के समय के आदेश में। परीक्षण पैकेज b.N पैरामीटर को अनुकूली रूप से बदलकर नैनोसेकंड सटीक समय को संभाल सकता है। – zzzz

+0

@shaz आप समय का भी उपयोग कर सकते हैं। चूंकि: t0: = time.अब(); expensiveCall(); println ("समय:", समय। से (टी 0)) – BurntSushi5

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