दिलचस्प पोस्ट
एक वास्तविक (निश्चित / अस्थायी बिंदु) मूल्य को दबाना सबसे तेज़ तरीका है? क्या मैं == 0 और 0 == में अंतर है I? किसी छवि को बिटमैप में डाउनलोड करने के लिए कोई कैसे उपयोग करता है? Jquery: आईई पर इनपुट फ़ाइल को घटना बदलें तेजी से परीक्षण के लिए पोस्टग्रेएसक्यूडी अनुकूलित करें एनआईटी प्रौद्योगिकियों का प्रयोग करके स्क्रीन के वीडियो रिकॉर्ड करें "ज़बरा का स्वामी कौन है" प्रोग्रामिंग को हल करना? अंडाकार के साथ एक स्ट्रिंग को छोटा करने के लिए आदर्श विधि टिप्पणी के लिए अलग-अलग चित्रों को स्विफ्ट करें एनजी मॉडेल फ़ॉर्मेटर्स और पार्सर जावास्क्रिप्ट में सीएसएस प्रॉपर्टी सेट करें? स्ट्रिंग लीटरल्स का सी अनुकूलन JSON क्या है और मैं इसका उपयोग क्यों करूं? जावास्क्रिप्ट में पूरे शब्द का मिलान क्या जावा में एक म्यूटक्स है?

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

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

जाहिर है मैं 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 

Solutions Collecting From Web of "आर में फ़ंक्शन निष्पादन समय मापना"

ऐसा करने का एक अन्य संभावित तरीका 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 एमएमएस का औसत निष्पादन था।