作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Lua 作为其中一种语言进行速度测试,我只是想要一些关于如何在可能的情况下使我的代码更快一点的建议。我自己进行速度测试很重要,因为我正在查看非常具体的参数。
代码从一个看起来像这样的文件中读取,但数字是随机生成的,范围从 1 zu 1 000 000。在一个列表中有 100 到 10 000 个数字:
type
(123,124,364,5867,...)
type
(14224,234646,5686,...)
...
type
用于另一种语言,因此可以忽略它。我只是把它放在这里,所以你知道为什么我没有解析每一行。这是我的 Lua 代码:
incr = 1
for line in io.lines(arg[1]) do
incr = incr +1
if incr % 3 == 0 then
line:gsub('([%d]+),?',function(n)tonumber(n)end)
end
end
最佳答案
恕我直言,这个 tonumber()
基准测试是相当奇怪的。大部分 CPU 时间将用于其他任务(正则表达式解析、文件读取等)。
不是转换为数字并忽略结果,而是计算输入文件中所有数字的总和更合乎逻辑:
local gmatch, s = string.gmatch, 0
for line in io.lines(arg[1]) do
for n in gmatch(line, '%d+') do
s = s + n -- converting string to number is automatic here
end
end
print(s)
关于performance - Lua字符串转数解析速度优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17978245/
我是一名优秀的程序员,十分优秀!