gpt4 book ai didi

julia - 我可以通过哪些方式对 Julia 函数进行基准测试?

转载 作者:行者123 更新时间:2023-12-03 14:36:15 25 4
gpt4 key购买 nike

背景

我自学了机器学习,最近开始研究 Julia 机器学习生态系统。

来自 python 背景并拥有一些 Tensorflow 和 OpenCV/ skimage 经验,我想对 Julia ML 库进行基准测试 (通量/JuliaImages)反对其同行看看它的实际执行速度有多快或多慢简历 (任何)任务并决定我是否应该转向使用 Julia。

我知道如何使用 timeit 获取在 python 中执行函数所花费的时间像这样的模块:

#Loading an Image using OpenCV

s = """\
img = cv2.imread('sample_image.png', 1)
"""
setup = """\
import timeit
"""
print(str(round((timeit.timeit(stmt = s, setup = setup, number = 1))*1000, 2)) + " ms")
#printing the time taken in ms rounded to 2 digits

如何使用适当的库(在本例中为 JuliaImages)比较在 Julia 中执行相同任务的函数的执行时间。

Julia 是否为 time/benchmark 提供任何函数/宏?

最佳答案

using BenchmarkTools是对 Julia 函数进行基准测试的推荐方法。除非您正在计时一些需要很长时间的事情,否则请使用 @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

虽然有一些参数可以调整,但默认值通常效果很好。更多关于 BenchmarkTools 的信息,请参阅 the manual。 .

关于julia - 我可以通过哪些方式对 Julia 函数进行基准测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59828196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com