विभिन्न गोले के बीच लिपियों के चलाने के समय की तुलना के लिए, कुछ एसई जवाब उपयोग करने का सुझाव bash
'एस में निर्मित time
आदेश है, इसलिए की तरह:
time bash -c 'foo.sh'
time dash -c 'foo.sh'
... आदि , हर खोल के लिए परीक्षण करने के लिए। इस तरह के मानदंड प्रत्येक शेल के लिए खुद को लोड करने और आरंभ करने के लिए लिए गए समय को समाप्त करने में विफल होते हैं । उदाहरण के लिए, मान लें कि उपरोक्त दोनों कमांड एक धीमी गति से डिवाइस पर जल्दी फ्लॉपी डिस्क , (124KB / s), dash
( ~ 150K निष्पादन योग्य) की रीड गति के साथ संग्रहीत की गई ( ~ 1M ) शेल से लगभग 7x तेज़ी से लोड होगी लोडिंग समय संख्याओं को तिरछा करेगा - गोले लोड होने के बाद प्रत्येक शेल के रन समय को मापने के लिए उन गोले के पूर्व-लोडिंग समय अप्रासंगिक हो सकते हैं ।bash
time
foo.sh
स्क्रिप्ट के समय को चलाने के लिए सबसे अच्छा पोर्टेबल और सामान्य उपयोग क्या है जो प्रत्येक शेल के भीतर से चलाया जा सकता है ? तो उपरोक्त कोड कुछ इस तरह दिखाई देगा:
bash -c 'general_timer_util foo.sh'
dash -c 'general_timer_util foo.sh'
एनबी: कोई शेल -इन- time
कमांड नहीं है, क्योंकि कोई भी पोर्टेबल या सामान्य नहीं है।
यदि उपयोगकर्ता किसी स्क्रिप्ट में पहली बार लपेटने के बिना शेल के आंतरिक आदेशों और पाइपलाइनों द्वारा लिए गए समय को बेंचमार्क करने में सक्षम है, तो भी बेहतर है। इस तरह कृत्रिम वाक्य रचना में मदद मिलेगी:
general_timer_util "while read x ; do echo x ; done < foo"
कुछ गोले ' time
इसे प्रबंधित कर सकते हैं। उदाहरण के लिए bash -c "time while false ; do : ; done"
काम करता है। यह देखने के लिए कि आपके सिस्टम में क्या काम करता है, (और नहीं), कोशिश करें:
tail +2 /etc/shells |
while read s ; do
echo $s ; $s -c "time while false ; do : ; done" ; echo ----
done
/usr/bin/time
?