दिलचस्प पोस्ट
मैं उस बटन को कैसे प्राप्त करूं जिसने फ़ॉर्म को सबमिट करने से ईवेंट सबमिट किया? एक विशिष्ट स्क्रीन में दोहरी मॉनिटर कॉन्फ़िगरेशन में JFrame दिखाएं मैं बाश में एक सीमांकक पर स्ट्रिंग कैसे विभाजित करूं? __मैन__.py क्या है? मैं PHP में HTML को गूंज कैसे कर सकता हूं? आईओएस: दो तिथियों की तुलना करें पायथन के साथ ऑडियो चलाएं एक ऑप्शन अनुरोध क्यों भेजा गया है और मैं इसे अक्षम कर सकता हूं? आग और दृष्टिकोण को भूल जाओ UITextField में बैकस्पेस का पता लगाएं फ्लोट की तुलना में फ्लोट की तुलना में अजीब आउटपुट ग्रहण "त्रुटि: मुख्य वर्ग को ढूँढ या लोड नहीं किया जा सका" प्रतिनिधियों और घटनाओं के बीच अंतर क्या हैं? 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 एमएमएस का औसत निष्पादन था।