【发布时间】:2020-08-06 19:33:37
【问题描述】:
我试图比较这两个 sn-ps,看看一秒钟可以完成多少次迭代。事实证明,Julia 实现了 250 万次迭代,而 Python 实现了 400 万次。朱莉娅不是应该更快吗?还是这两个 sn-ps 不等价?
Python:
t1 = time.time()
i = 0
while True:
i += 1
if time.time() - t1 >= 1:
break
朱莉娅:
function f()
i = 0
t1 = now()
while true
i += 1
if now() - t1 >= Base.Dates.Millisecond(1000)
break
end
end
return i
end
【问题讨论】:
-
我不确定 Julia 是如何工作的,但看起来你必须为每次比较构建一个新对象,而 Python 正在做简单的整数比较。
-
另外请注意,这是某种穷人的速度比较,不是吗?现在,你可以让 Python 和 Julia 以大致相同的速度运行,并且有适当的动机(在两端)。如果您这样做是为了学习任何一种语言,请查看哪种语言更容易让您思考。您可以稍后在实际需要时对其进行优化。
-
@norok2 这适用于某些代码,但不适用于其他代码。如果您能够将 Python 代码转换为对以快速语言编写的库函数的调用,或者如果它受 numba 或类似的支持,那么也许可以,但否则 Python 会慢得多。
-
@DNF 在某些方面 Python 更快,而在某些方面 Julia 更快。我相信你可以找到两者的例子。仅仅因为相对昂贵的显式循环和函数调用,说 Python “显着”(无论这意味着什么)慢,是过分忽视了整体情况。当然,如果这是你的主力,也许你和 Julia 在一起会更好。但是,如果您使用正确的工具,您可以在 Python 中获得同样快的速度。学习这些工具是否值得,还是学习另一种语言更好。很难说。
-
我同时使用这两种语言,虽然有“一些”例子表明这两种语言都更快,但平衡是相当大的一方面。这只是 Python 被解释并且几乎不关注性能的结果,而 Julia 非常关注性能。这实际上很像说 Python 与 C 一样快。如果 没有 有显着差异,那就太奇怪了,而且会破坏 Julia 的大部分目的。