मैं एक ही एल्गोरिदम के दो अलग-अलग कार्यान्वयन (पायथन और जावा) के प्रदर्शन की तुलना करना चाहता हूं। मैं टर्मिनल पर स्क्रिप्ट चलाता हूं (उबंटू 18 का उपयोग करके) इस तरह:

time script_name

मुझे यकीन नहीं है कि यह कितना सही है। क्या इस बेंचमार्क की सटीकता को बढ़ाना संभव है? शायद पाइथन या जावा में किसी भी प्रतिबंध या सेट-अप को हटाने का कोई तरीका है?

2
Sergey Vladimirovich 18 अक्टूबर 2018, 00:13

2 जवाब

सबसे बढ़िया उत्तर

जैसा कि this answer में बताया गया है, time का उपयोग करके किसी प्रोग्राम को बेंचमार्क करने का सही तरीका निम्न कमांड है: sudo chrt -f 99 /usr/bin/time --verbose <benchmark>. हालांकि, ध्यान दें कि यह केवल तभी सटीक होगा जब एल्गोरिथम निष्पादित होने में कम से कम एक सेकंड का समय लेता है, अन्यथा exec कॉल बेंचमार्क का एक बड़ा हिस्सा ले सकता है।

यह उत्तर इसके बजाय perf stat का उपयोग करने का सुझाव देता है, जैसे: perf stat -r 10 -d <your app and arguments>.

1
Peiffap 18 अक्टूबर 2018, 12:14

अधिकांश परीक्षण के लिए time कमांड की सटीकता शायद ठीक है।

लेकिन अगर आप चाहें, तो आप import subprocess के साथ टाइमिंग के लिए दूसरी पायथन स्क्रिप्ट लिख सकते हैं, जो तब subprocess.call() फ़ंक्शन (या subprocess मॉड्यूल में कई संबंधित कार्यों में से एक) का उपयोग करती है। एल्गोरिथ्म के दो संस्करण।

आपकी टाइमिंग स्क्रिप्ट import time और फिर एल्गोरिथम चलने से पहले और बाद में datetime.datetime.now().time() कर सकती है, यह दिखाने के लिए कि कितना समय बीत गया।

1
Shawn Yarbrough 17 अक्टूबर 2018, 21:22