【发布时间】:2017-09-11 18:42:56
【问题描述】:
所以我一直在比较不同场景中的 f 弦和它们的速度。我遇到了一个 f 字符串速度较慢的场景。
编辑:x = 0
In[1]: %timeit f"{x:0128x}"
363 ns ± 1.69 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In[2]: %timeit '%0128x' % x
224 ns ± 1.37 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In[3]: %timeit f"{x:0128X}"
533 ns ± 22 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In[4]: %timeit "%0128X" % x
222 ns ± 0.408 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
为什么在这种情况下 f-strings 慢,为什么 f-strings 的 'X' 比 'x' 慢很多?
【问题讨论】:
-
附注:如果原始值
x是整数,我不确定标题是否应该是“十六进制字符串”。 -
或许更好的表述方式是“使用十六进制格式”
-
您可以编辑标题。
-
因为一个 (
f-strings) 比另一个复杂得多。 -
请注意,您应该避免使用不同的范围。
% x使用x作为本地,f"..."很可能正在查找x作为全局。将两者放在一个函数中以确保相同的范围。然后我得到每个循环 430ns 和 304ns。
标签: python performance python-3.x string-formatting python-3.6