दिलचस्प पोस्ट
सी # में बिग पूर्णांक INOTifyPropertyChanged को कार्यान्वित करना – क्या एक बेहतर तरीका मौजूद है? XSD फ़ाइल का उपयोग कर XML फ़ाइल जनरेट कर रहा है बड़ी संख्या में पुस्तकालय सी ++ दृश्यता सेट करने के लिए jQuery के समतुल्य (->) मोनाद और भ्रम के बारे में (->) उदाहरणों का उपयोग कैसे करें जेएस ली टैग onclick IE8 पर काम नहीं कर रहा है संग्रह संग्रह की सामग्री के आधार पर संकलन को फेंकता है या समवर्ती सुधार नहीं करता है आईओएस एप डिस्प्ले रिकॉर्डर निजी एपीआई का उपयोग किए बिना स्क्रीन कैसे रिकार्ड करता है? पता लगाएँ कि एक्सेल कार्यपुस्तिका पहले से ही खुले हैं WAMP सर्वर विंडोज 10 पर ठीक से काम नहीं करता है जेवीएम, जेडीके, जेआरई और ओपन जेडीके में क्या अंतर है? JQuery के उपयोग से एक तत्व के सभी गुण प्राप्त करें सी ++ में स्ट्रिंग से गणित के भाव का मूल्यांकन करना कैसे एक बहुआयामी सरणी समतल करने के लिए?

आर में फ़ंक्शन निष्पादन समय मापना

कार्य के निष्पादन समय को मापने के आर में कोई मानकीकृत तरीका है?

जाहिर है मैं system.time ले जा सकता हूं। निष्पादन से पहले और बाद में निष्पादन के समय और फिर उन लोगों के अंतर लेते हैं, लेकिन मैं जानना चाहूंगा कि क्या कुछ मानकीकृत तरीका या फ़ंक्शन (पहिया का आविष्कार नहीं करना चाहते हैं)।


मुझे याद है कि मैंने एक बार नीचे की तरह कुछ इस्तेमाल किया है:

 somesysfunction("myfunction(with,arguments)") > Start time : 2001-01-01 00:00:00 # output of somesysfunction > "Result" "of" "myfunction" # output of myfunction > End time : 2001-01-01 00:00:10 # output of somesysfunction > Total Execution time : 10 seconds # output of somesysfunction 

वेब के समाधान से एकत्रित समाधान "आर में फ़ंक्शन निष्पादन समय मापना"

ऐसा करने का एक अन्य संभावित तरीका Sys.time () का उपयोग करना होगा:

 start.time <- Sys.time() ...Relevent codes... end.time <- Sys.time() time.taken <- end.time - start.time time.taken 

ऐसा करने के लिए सबसे सुंदर तरीका नहीं, ऊपर answere की तुलना में, लेकिन निश्चित रूप से यह करने का एक तरीका है।

अंतर्निहित फ़ंक्शन सिस्टम। समय system.time() ऐसा कर देगा

जैसे प्रयोग करें: system.time(result <- myfunction(with, arguments))

जैसे एंड्री ने कहा, system.time() ठीक काम करता है लघु समारोह के लिए मैं उसमें replicate() को देना पसंद करता हूं:

 system.time( replicate(10000, myfunction(with,arguments) ) ) 

निष्पादन समय को मापने का थोड़ा अच्छा तरीका, आरबीएन्चिमार्क पैकेज का उपयोग करना है। यह पैकेज (आसानी से) आपको अपने परीक्षण को दोहराने के लिए कितनी बार निर्दिष्ट करने की अनुमति देता है और संबंधित बेंचमार्क होना चाहिए।

Stats.stackexchange पर एक संबंधित प्रश्न भी देखें

वहाँ भी है proc.time()

आप Sys.time रूप में उसी तरह उपयोग कर सकते हैं लेकिन यह आपको system.time को समान परिणाम देता है।

 ptm <- proc.time() #your function here proc.time() - ptm 

का उपयोग करने के बीच मुख्य अंतर

 system.time({ #your function here }) 

यह है कि proc.time() विधि अभी भी समय को मापने के बजाय अपने फ़ंक्शन निष्पादित करता है … और वैसे, मैं system.time का उपयोग करना चाहता हूं। समय के भीतर {} अंदर ताकि आप चीजों का एक सेट डाल सकें …

पैकेज "टिक्टोक" आपको निष्पादन समय को मापने का एक बहुत आसान तरीका प्रदान करता है। दस्तावेज में है: https://cran.fhcrc.org/web/packages/tictoc/tictoc.pdf

 install.packages("tictoc") require(tictoc) tic() rnorm(1000,0,1) toc() 

एक वेरिएबल में बीता समय बचाने के लिए आप यह कर सकते हैं:

 install.packages("tictoc") require(tictoc) tic() rnorm(1000,0,1) exectime <- toc() exectime <- exectime$toc - exectime$tic 

अगर आप चाहें, तो आप toc शैली tictoc कार्यों का उपयोग कर सकते हैं इस अन्य को देखें तो सवाल

आर में स्टॉपवॉच फ़ंक्शन

यद्यपि अन्य समाधान एक कार्य के लिए उपयोगी होते हैं, मैं निम्नलिखित कोड का सुझाव देता हूं जहां अधिक सामान्य और प्रभावी है:

 Rprof ( tf <- "log.log", memory.profiling = TRUE ) your code must be in between Rprof ( NULL ) ; print ( summaryRprof ( tf ) ) 

microbenchmark एक हल्के (~ 50 केबी) पैकेज है और कई अभिव्यक्तियों और कार्यों के बेंच मार्किंग के लिए आर में एक या अधिक मानक या अधिक है:

 microbenchmark(myfunction(with,arguments)) 

उदाहरण के लिए:

 > microbenchmark::microbenchmark(log10(5), log(5)/log(10), times = 10000) Unit: nanoseconds expr min lq mean median uq max neval cld log10(5) 0 0 25.5738 0 1 10265 10000 a log(5)/log(10) 0 0 28.1838 0 1 10265 10000 

यहां दोनों एक्सचेंजों का मूल्यांकन 10000 बार किया गया था, जिसमें करीब 20-30 एमएमएस का औसत निष्पादन था।