कई कार्यान्वयनों के लिए कच्चे टाइमिंग पेस्ट करें और एक ही तुलना तालिका में माध्य, माध्यिका, मानक विचलन, न्यूनतम, अधिकतम और सापेक्ष गति प्राप्त करें, साथ ही कहीं भी पेस्ट करने के लिए एक Markdown संस्करण।
टाइमिंग के ढेर को एक तुलना तालिका में बदलें। प्रति पंक्ति एक सूट, एक लेबल, एक कोलन, फिर आपके कच्चे माप। यह सामान्य सांख्यिकी की गणना करता है, सबसे तेज़ के विरुद्ध सब कुछ रैंक करता है, और आपको पुल अनुरोध के लिए एक Markdown तालिका देता है।
प्रति पंक्ति एक सूट "name: value, value, value" के रूप में। अल्पविराम, अर्धविराम या रिक्त स्थान सभी पृथक्कारक के रूप में काम करते हैं।
सूट
रन
माध्य
माध्यिका
मानक विचलन
न्यूनतम
अधिकतम
सापेक्ष
तुलना देखने के लिए "name: 1, 2, 3" रूप में कम से कम एक पंक्ति जोड़ें।
बिना गुमराह हुए बेंचमार्क तालिका पढ़ना
माध्य और माध्यिका एक कारण से असहमत हैं
तालिका दोनों को दिखाती है, और उनके बीच का अंतर वह पहली चीज़ है जिसे देखने लायक है। यदि माध्य माध्यिका से काफी ऊपर है, तो धीमी रन की एक छोटी संख्या औसत को ऊपर खींच रही है — एक गार्बेज कलेक्शन विराम, एक कैश मिस तूफान, ऑपरेटिंग सिस्टम का आपके कोर पर कुछ और शेड्यूल करने का निर्णय। माध्यिका उनकी अनदेखी करती है; माध्य नहीं करता।
दोनों में से कोई भी स्वचालित रूप से सही उद्धरण नहीं है। यदि आप स्थिर-अवस्था थ्रूपुट के लिए सर्वर का आकार दे रहे हैं, तो माध्य मायने रखता है, क्योंकि वे धीमी रन वास्तव में समय लेती हैं। यदि आप दो कार्यान्वयनों की तुलना यह तय करने के लिए कर रहे हैं कि कौन सा एल्गोरिदम बेहतर है, तो माध्यिका आम तौर पर निष्पक्ष संख्या होती है, क्योंकि आउटलायर आपके मशीन को माप रहे हैं न कि आपके कोड को। जिसके बारे में आप वास्तव में तर्क कर रहे हैं उसे उद्धृत करें, और बताएँ कि वह कौन सा है।
मानक विचलन बताता है कि क्या तुलना वास्तविक है
माध्य में अंतर का तभी मतलब है जब वह फैलाव के सापेक्ष बड़ा हो। 0.05 के मानक विचलन के साथ 12.0 और 12.4 मिलीसेकंड पर दो सूट वास्तव में भिन्न हैं। 3.0 के मानक विचलन के साथ वही दो माध्य अलग-अलग टोपी पहने एक ही संख्या हैं, और उनसे निकाला गया कोई भी निष्कर्ष शोर है।
यह उपकरण नमूना मानक विचलन का उपयोग करता है, n के बजाय n-1 से विभाजित करता है। यह यहाँ सही विकल्प है: आपकी रन सभी संभावित रन की आबादी से निकाला गया एक नमूना है, न कि पूरी आबादी, और n से विभाजित करने से फैलाव की प्रणालीगत रूप से कम आंकलन होगी। एकल रन के साथ गणना करने के लिए कोई फैलाव नहीं है, इसलिए कॉलम शून्य पढ़ता है — जो एक अनुस्मारक है कि एक माप बेंचमार्क नहीं है।
सापेक्ष गति वह संख्या है जो लोग याद रखते हैं
अंतिम कॉलम हर सूट को सबसे तेज़ के गुणक के रूप में व्यक्त करता है, क्योंकि वही रूप है जिसमें परिणाम आम तौर पर दोहराया जाता है। "नया पार्सर 2.4x तेज़ है" यात्रा करता है; "नया पार्सर औसतन 8.2 मिलीसेकंड है" तब तक नहीं, जब तक श्रोता पहले से बेसलाइन न जानता हो।
दो सावधानियाँ। पहली, अनुपात उन दो माध्यों की सारी अनिश्चितता विरासत में लेता है जो इसके पीछे हैं, इसलिए शोर-युक्त डेटा पर 1.05x का अंतर बिल्कुल अंतर नहीं है। दूसरी, माध्यों का अनुपात माध्यों के अनुपात के समान नहीं है, और यदि रन आकार में बहुत भिन्न हों तो दोनों विपरीत दिशा में इशारा कर सकते हैं। जब संख्याएँ करीब हों, तो अनुपात के साथ फैलाव भी रिपोर्ट करें और पाठक को निर्णय लेने दें।
अक्सर पूछे जाने वाले प्रश्न
माप किस प्रारूप में होने चाहिए?
प्रति सूट एक पंक्ति: एक लेबल, एक कोलन, फिर संख्याएँ। अल्पविराम, अर्धविराम, रिक्त स्थान और टैब सभी पृथक्कारक माने जाते हैं, इसलिए अधिकांश कॉपी-पेस्ट किया गया आउटपुट बिना संपादन के काम करता है।
क्या इकाई चयनकर्ता कुछ रूपांतरित करता है?
नहीं। यह केवल आउटपुट को लेबल करता है। सांख्यिकी उन संख्याओं पर ठीक वैसे ही गणना की जाती हैं जैसे आपने टाइप किया था, इसलिए पेज पर सभी सूट पहले से ही एक ही इकाई में होने चाहिए।
एकल रन के लिए मानक विचलन शून्य क्यों है?
नमूना मानक विचलन n-1 से विभाजित करता है, जो n के एक होने पर शून्य है। एकल माप की रिपोर्ट करने के लिए कोई फैलाव नहीं है, और शून्य एक संकेत है कि आपको और रन एकत्र करने चाहिए।
"relative" की गणना कैसे की जाती है?
हर सूट का माध्य पेज पर सबसे छोटे माध्य से विभाजित किया जाता है। सबसे तेज़ सूट को ऐसा लेबल किया जाता है न कि 1.00x दिखाने के लिए, क्योंकि निर्यातित तालिका में वह बेहतर पढ़ता है।
क्या मैं बेंचमार्किंग उपकरण से सीधे आउटपुट पेस्ट कर सकता हूँ?
आम तौर पर। जब तक प्रत्येक पंक्ति में एक नाम, एक कोलन और कुछ संख्याएँ हैं, अतिरिक्त विराम को पृथक्कारक माना जाता है। बिना कोलन वाली पंक्तियाँ छोड़ दी जाती हैं न कि त्रुटि का कारण बनती हैं।
क्या Markdown तालिका पुल अनुरोध में पेस्ट करने के लिए सुरक्षित है?
हाँ — यह एक हेडर पंक्ति और एक पृथक्कारक पंक्ति के साथ सादा GitHub-फ्लेवर्ड Markdown है। कॉलम हेडर पेज भाषा का अनुसरण करते हैं, इसलिए यदि आप उन्हें अंग्रेज़ी में चाहते हैं तो पहले भाषा बदलें।