函数调用比即时计算更快吗?
2016-5-19 21:43:52
收藏:0
阅读:60
评论:1
我现在很困惑。我有一个函数,它创建一个具有随机条目数量的表格,并尝试两种不同的方法来选择该数字(这在一定程度上是有权重的):
方法1,分离的函数
local function n()
local n = math.random()
if n < .7 then return 0
elseif n < .8 then return 1
end
return 2
end
local function final()
for i = 1, n() do
...
end
end
方法2,直接计算
local function final()
local n = math.random()
if n < .7 then n = 0
elseif n < .8 then n = 1
else n = 2
end
for i = 1, n do
...
end
end
问题在于:由于某些原因,第一种方法的执行速度比第二种方法快30%。为什么呢?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
不会有比直接内联更快的方法来调用函数。第一种方法的唯一区别是添加了设置堆栈和拆卸堆栈的额外工作。代码的其余部分,无论是原始的还是编译的,都完全相同,所以“仅仅是计算”肯定比“计算加上一些额外的工作”更快。
您的基准测试似乎不太精确。对于这样轻量级的函数,一个
for循环和一个os.clock调用本身所需的时间几乎与函数本身的时间相同,所以结合os.clock固有的低分辨率和少量的循环,您的数据实际上不具备统计学意义,并且您主要看到的是硬件中随机故障的结果。使用更好的计时器,并将循环次数增加到至少1000000次。