2012-01-30 11 views
8

में चलने का समय ओकंप में मेरे कोड को कितना समय निकाला गया है इसका आकलन कैसे करें? क्या मापने के लिए कोई कार्य हैं?ओकैम

उत्तर

15

आप व्यक्तिगत कार्यों के निष्पादन के समय को मापने के लिए चाहते हैं, तो इस उपयोगिता समारोह कई मामलों में उपयोगी है:

let time f x = 
    let t = Sys.time() in 
    let fx = f x in 
    Printf.printf "Execution time: %fs\n" (Sys.time() -. t); 
    fx 

जहां f किसी भी समारोह जो तर्क के रूप में x लेता है और कुछ देता है

4

आप Sys.time() का उपयोग कर सकते हैं। यह प्रोसेसर समय, सेकेंड में, निष्पादन की शुरुआत के बाद से प्रोग्राम द्वारा उपयोग किया जाता है।

स्रोत: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Sys.html

+0

Sys.time गलत चल दे रहा है:

अगर मैं पैड के जवाब पुनर्लेखन मैं निम्नलिखित कोड मिलता है। इसने एक छोटे से कार्यक्रम के लिए 341.1 एस दिया। जब मैंने यूनिक्स टाइम कमांड का इस्तेमाल किया, तो उसने केवल 0.001 एस दिया। – priyanka

+0

मैंने कभी इस तरह की विफलता नहीं देखी है। क्या आप दिखा सकते हैं कि आपका कोड कैसा दिखता है? (हो सकता है कि इसे अपने प्रश्न के अंत में जोड़ें।) –

+0

एक टोपवेल में कॉलिंग Sys.time() को कॉल करने से टोपेलवेल थ्रेड ने कोड चलाने में कितना समय बिताया है। – ben

11

अपने कोडिंग में, मैं Unix.gettimeofday() का उपयोग करता हूं, जो एक सेकंड से भी कम समय के संकल्प के साथ एक फ्लोट वैल्यू देता है। यह documentation for the OCaml Unix module में वर्णित है। मॉड्यूल के नाम के बावजूद, यह फ़ंक्शन विंडोज़ में भी काम करता है (और शायद लगभग सभी वातावरणों में आपको सामना करना पड़ सकता है)।()

let time f x = 
    let start = Unix.gettimeofday() 
    in let res = f x 
    in let stop = Unix.gettimeofday() 
    in let() = Printf.printf "Execution time: %fs\n%!" (stop -. start) 
    in 
     res 
संबंधित मुद्दे