R system.time (exp) आउटपुट में 'उपयोगकर्ता' और 'सिस्टम' बार माप क्या हैं?


90

मैं system.time(expression)एक आर फ़ंक्शन के लिए निष्पादन समय को मापने के लिए उपयोग कर रहा हूं ।

आउटपुट मुझे कॉल के लिए मिलता है

system.time(myfunction())

है:

    user  system elapsed   
  117.36    5.65  127.86

And उपयोगकर्ता ’और 'सिस्टम’ क्या मापता है?



1
यह सवाल एक बेहतर शीर्षक का उपयोग कर सकता है - जैसे "उपयोगकर्ता क्या हैं" और 'सिस्टम' बार मापने? "। इससे सूची ब्राउज़ करने वाले लोगों के लिए प्रश्न स्पष्ट हो जाएगा।
शार्प

जवाबों:


48

इस में चर्चा की है ?proc.time( system.time()रिटर्न वर्ग की एक वस्तु "proc.time"):

Details:

     ‘proc.time’ returns five elements for backwards compatibility, but
     its ‘print’ method prints a named vector of length 3.  The first
     two entries are the total user and system CPU times of the current
     R process and any child processes on which it has waited, and the
     third entry is the ‘real’ elapsed time since the process was
     started.

....तथा

Value:

....

     The definition of ‘user’ and ‘system’ times is from your OS.
     Typically it is something like

     _The ‘user time’ is the CPU time charged for the execution of user
     instructions of the calling process. The ‘system time’ is the CPU
     time charged for execution by the system on behalf of the calling
     process._

45

सबसे स्पष्ट व्याख्या जो मैंने कभी-कभी के बीच के अंतर पर पढ़ी है userऔर विलियम डनलप द्वारा [आर-हेल्प] परsystem प्रदान की गई थी :

"उपयोगकर्ता CPU समय" वर्तमान प्रक्रिया द्वारा खर्च किए गए CPU समय (यानी, वर्तमान आर सत्र) और "सिस्टम CPU समय" को वर्तमान प्रक्रिया की ओर से कर्नेल (ऑपरेटिंग सिस्टम) द्वारा खर्च किए गए CPU समय देता है। ऑपरेटिंग सिस्टम का उपयोग फ़ाइलों को खोलने, इनपुट या आउटपुट करने, अन्य प्रक्रियाओं को शुरू करने और सिस्टम घड़ी को देखने के लिए किया जाता है: संचालन जिसमें संसाधन शामिल होते हैं जिन्हें कई प्रक्रियाओं को साझा करना होगा।

हालाँकि ?proc.timeकुछ इसी तरह का रिटर्न देता है, यह विवरण मेरे लिए समझने में बहुत आसान था।


22

यहाँ कुछ सरल स्पष्टीकरण दिए गए हैं:

बीता हुआ समय समय अभिव्यक्ति के लिए सीपीयू (रों) के लिए शुल्क लिया है।

उपयोगकर्ता समय दीवार घड़ी का समय है। एक उपयोगकर्ता के रूप में अनुभव किया गया समय।

आमतौर पर दोनों समय अपेक्षाकृत करीब होते हैं। लेकिन वे कुछ अन्य स्थितियों में भिन्न हो सकते हैं। उदाहरण के लिए:

  • यदि समय व्यतीत हो गया> उपयोगकर्ता समय , इसका अर्थ है कि सीपीयू कुछ अन्य परिचालनों के लिए प्रतीक्षा कर रहा है (बाहरी हो सकता है)।
  • यदि समय समाप्त हो गया है <उपयोगकर्ता समय , इसका मतलब है कि आपकी मशीन में कई कोर हैं और उनका उपयोग करने में सक्षम है

18

चूंकि ये विकिपीडिया से वैसे भी सामान्य हैं:

शब्द 'उपयोगकर्ता सीपीयू समय' पहली बार में थोड़ा भ्रामक हो सकता है। स्पष्ट होने के लिए, CPU का कुल समय (वास्तविक CPU समय) उस समय की मात्रा का संयोजन होता है, जब CPU किसी प्रोग्राम के लिए कुछ क्रिया करने में खर्च करता है और CPU की ओर से प्रोग्राम की ओर से कर्नेल के लिए सिस्टम कॉल्स करने के लिए समय की राशि खर्च करता है। जब कोई प्रोग्राम किसी अरै के माध्यम से लूप करता है, तो वह यूजर सीपीयू समय जमा कर रहा है। इसके विपरीत, जब कोई प्रोग्राम किसी सिस्टम कॉल को निष्पादित या कांटा के रूप में निष्पादित करता है, तो यह सिस्टम CPU समय जमा कर रहा है।

http://en.wikipedia.org/wiki/Time_(Unix)#User_Time_vs_System_Time


2

चूँकि उन समय चर को आपके OS द्वारा परिभाषित किया जाता है, आप इस जानकारी को पुनः प्राप्त कर सकते हैं कि उनकी गणना man timeआपके शेल में कैसे निष्पादित की जाती है (onix):

... इन आँकड़ों में (i) अंतर्ग्रहण और समाप्ति के बीच का वास्तविक समय होता है, (ii) उपयोगकर्ता सीपीयू समय ( एक संरचनात्मक tms में मान tms_utimeऔर tms_cutimeमान जो समय (2) द्वारा लौटाया जाता है), और (iii) सिस्टम CPU समय ( एक संरचनात्मक tms में tms_stimeऔर tms_cstimeमानों का योग जो समय (2) द्वारा लौटाया जाता है)।

उल्लिखित समय चर की परिभाषा यहां पाई जा सकती है :

tms_utime उपयोगकर्ता CPU समय।

tms_stime सिस्टम CPU समय।

tms_cutime उपयोगकर्ता सीपीयू बच्चे की प्रक्रिया को समाप्त करने का समय।

tms_cstime सिस्टम सीपीयू का समय समाप्त बच्चे की प्रक्रिया।

उपयोगकर्ता और सिस्टम के समय के बीच अंतर का स्पष्टीकरण daroczig के उत्तर और SO पर कहीं और वर्णित किया गया है :

tms_utimeतत्व अपने कोड को क्रियान्वित करने बिताया गया समय, या सी पुस्तकालय में कोड है। tms_stimeतत्व समय की राशि गिरी आपकी ओर से कोड को क्रियान्वित करने में खर्च किया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.