using BenchmarkTools
জুলিয়া ফাংশনগুলির বেঞ্চমার্কের প্রস্তাবিত উপায়। আপনি যদি এমন কিছু সময় নির্ধারণ না করেন যা বেশ খানিকটা সময় নেয়, না হয় ব্যবহার করুন @benchmark
বা এ @btime
থেকে রফতানি করা কম ভার্বোজ ম্যাক্রোগুলি। কারণ এই ম্যাক্রোগুলির পিছনের যন্ত্রপাতিগুলি লক্ষ্য ফাংশনটি বহুবার মূল্যায়ন করে, @time
ধীরে ধীরে চলমান জিনিসগুলি (যেমন, যেখানে ডিস্ক অ্যাক্সেস বা খুব বেশি সময় গ্রহণকারী গণনা জড়িত থাকে) বেঞ্চমার্কিংয়ের জন্য কার্যকর।
এটি ব্যবহার করা গুরুত্বপূর্ণ @btime
বা @benchmark
সঠিকভাবে, এটি বিভ্রান্তিকর ফলাফল এড়িয়ে চলে। সাধারণত, আপনি এমন একটি ফাংশন বেঞ্চমার্ক করছেন যা এক বা একাধিক আর্গুমেন্ট নেয়। বেঞ্চমার্কিংয়ের সময়, সমস্ত আর্গুমেন্টগুলি বাহ্যিক চলক হওয়া উচিত: (বেঞ্চমার্ক ম্যাক্রো ছাড়াই)
x = 1
f(x)
# do not use f(1)
ফাংশনটি অনেকবার মূল্যায়ন করা হবে। যখনই ফাংশনটি মূল্যায়ন করা হয় তখন ফাংশন আর্গুমেন্টগুলি পুনরায় মূল্যায়ন হওয়া থেকে রোধ করতে, আমাদের প্রতিটি তর্ককে $
আর্গুমেন্ট হিসাবে ব্যবহৃত প্রতিটি ভেরিয়েবলের নামের সাথে উপসর্গ করে চিহ্নিত করতে হবে । বেঞ্চমার্কিং ম্যাক্রোগুলি এটি ব্যাঙ্কমার্কিং প্রক্রিয়া শুরু করার পরে একবার পরিবর্তনশীলকে মূল্যায়ন (সমাধান) করা উচিত এবং এটির ফলাফলটি সরাসরি যেমন পুনরায় ব্যবহার করতে হবে তা বোঝাতে এটি ব্যবহার করে:
julia> using BenchmarkTools
julia> a = 1/2;
julia> b = 1/4;
julia> c = 1/8;
julia> a, b, c
(0.5, 0.25, 0.125)
julia> function sum_cosines(x, y, z)
return cos(x) + cos(y) + cos(z)
end;
julia> @btime sum_cosines($a, $b, $c); # the `;` suppresses printing the returned value
11.899 ns (0 allocations: 0 bytes) # calling the function takes ~12 ns (nanoseconds)
# the function does not allocate any memory
# if we omit the '$', what we see is misleading
julia> @btime sum_cosines(a, b, c); # the function appears more than twice slower
28.441 ns (1 allocation: 16 bytes) # the function appears to be allocating memory
# @benchmark can be used the same way that @btime is used
julia> @benchmark sum_cosines($a,$b,$c) # do not use a ';' here
BenchmarkTools.Trial:
memory estimate: 0 bytes
allocs estimate: 0
--------------
minimum time: 12.111 ns (0.00% GC)
median time: 12.213 ns (0.00% GC)
mean time: 12.500 ns (0.00% GC)
maximum time: 39.741 ns (0.00% GC)
--------------
samples: 1500
evals/sample: 999
সামঞ্জস্য করা যায় তার চেয়ে বেশি পরামিতি থাকা অবস্থায়, ডিফল্ট মানগুলি সাধারণত ভালভাবে কাজ করে। অভিজ্ঞ ursers জন্য বেঞ্চমার্কটুলস সম্পর্কে অতিরিক্ত তথ্যের জন্য, ম্যানুয়ালটি দেখুন ।
@btime
এবং@belapsed
শুধুমাত্র সর্বনিম্ন সময় ফেরত দিন।