हम आसानी से समय फ़िक्स कॉल इलीक्सिर में कैसे कॉल कर सकते हैं?हम इलीक्सिर में आसानी से कॉल कैसे कर सकते हैं?
क्या यह सक्षम करने के लिए आईईएक्स में कोई छुपा स्विच है?
हम आसानी से समय फ़िक्स कॉल इलीक्सिर में कैसे कॉल कर सकते हैं?हम इलीक्सिर में आसानी से कॉल कैसे कर सकते हैं?
क्या यह सक्षम करने के लिए आईईएक्स में कोई छुपा स्विच है?
आप एक मॉड्यूल लिख सकते हैं जो किसी दिए गए फ़ंक्शन को माप सकता है। निम्नलिखित समारोह सेकंड में किसी दिए गए समारोह के क्रम रिटर्न:
defmodule Benchmark do
def measure(function) do
function
|> :timer.tc
|> elem(0)
|> Kernel./(1_000_000)
end
end
इस तरह यह प्रयोग करें:
iex> Benchmark.measure(fn -> 123456*654321 end)
9.0e-6
आप उपयोग करना है कि बेंचमार्किंग के लिए चाहते हैं, तो एक और जवाब है।
एकल रन निष्पादन समय को मापने से बेहतर दृष्टिकोण प्रति टाइमफ्रेम को मापने के लिए है। यह कोड को परीक्षण के तहत लेता है और इसे किसी दिए गए समय सीमा के भीतर दोहराता है। यह पद्धति अधिक सटीक परिणाम उत्पन्न करती है।
एक पुस्तकालय बुलाया Benchwarmer आपको लगता है कि के लिए उपयोग कर सकते हैं:
अपने mix.exs
def deps do
[ { :benchwarmer, "~> 0.0.2" } ]
end
को benchwarmer जोड़े, बस एक इनलाइन समारोह पारित:
iex> Benchwarmer.benchmark fn -> 123456*654321 end
*** #Function<20.90072148/0 in :erl_eval.expr/5> ***
1.2 sec 2M iterations 0.61 μs/op
[%Benchwarmer.Results{...}]
धन्यवाद, यह Iex टूल में बनाना अच्छा लगेगा। –
कार्य करने वाले समय की इकाई क्या है |>: timer.tc |> elem (0) |> कर्नेल.((_000_000) रिटर्न? क्या यह microseconds है? –
बेंचवार्मर संस्करण "~> 0.0.2" होना चाहिए या निर्भरता स्थापित करना विफल हो जाएगा। – bartolsthoorn
मुझे नहीं लगता कि ऐसा करने का विकल्प है। ऐसा करने का शायद आसान और तेज़ तरीका एरलांग है ['टाइमर: टीसी/1-2-3'] (http://www.erlang.org/doc/man/timer.html#tc-1)। – whatyouhide
@whatyouhide यकीन नहीं मैं क्या कर रहा हूँ गलत 'आईईएक्स (54)>: (Demo.sum 1000) ** (BadFunctionError) की उम्मीद एक समारोह timer.tc, मिल गया: 500,500 (stdlib) timer.erl: 165:: timer.tc/1' –
जैसा कि आप पिछली टिप्पणी में लिंक किए गए 'टाइमर: टीसी/1' के लिए प्रलेखन में देख सकते हैं, अगर आप केवल' टाइमर: टीसी 'के लिए एक तर्क पारित कर रहे हैं एक समारोह। आपका उदाहरण होगा: timer.tc (fn -> Demo.sum (1000) अंत) '। यदि आप मॉड्यूल + फ़ंक्शन + तर्क तीन गुना पास करना चाहते हैं, तो बस 'timer.tc (डेमो,: योग, [1000])' के साथ जाएं। – whatyouhide