lua不同写法速度差别很大
来源:互联网 发布:windows盗版的危害 编辑:程序博客网 时间:2024/05/01 03:35
前些天无意中在网上看到一篇文章,写的是几种脚本语言以及c的速度比较,大意是测试下来lua的速度很慢,只相当于c的1/60左右,看了一下测试函数,如下(命名版本1):
tkstart = os.clock()
local count = 10000000
local accumv = 34.5;
local function iterate (times,accumv)
if 0 == times then
return accumv
else
return iterate (times - 1, accumv + 2)
end
end
print(iterate(count,accumv))
print(os.clock() - tkstart)
这是个迭代调用,理论上这种调用速度不快,所以改写了一下,命名版本2
tkstart = os.clock()
local i=0.0;
local function process (ret)
while(i < 10000000.0) do
i = i+1.0
ret = ret + 2.0
end
return ret
end
process(34.5)
print(os.clock() - tkstart)
再改写了一下,版本3,如下:
tkstart = os.clock()
local i=0.0;
local function process (ret)
local t = ret
while(i < 10000000.0) do
i = i+1.0
t = t + 2.0
end
return ret
end
process(34.5)
print(os.clock() - tkstart)
用for循环再改写了一个版本,版本4,如下:
tkstart = os.clock()
local count = 10000000
local accumv = 34.5;
local function calc (times,accumv)
local result = accumv
for i=1,times do
result = result + 2.0
end
return result
end
print(calc(count,accumv))
print(os.clock() - tkstart)
简单测试耗时如下
版本1 0.945
版本2 0.484
版本3 0.475
版本4 0.138 编译成.out跟直接执行.lua耗时差不多,没明显变化。
虽然是一个功能很简单实现也很简单的lua函数,但速度差别很大,由此可见不同写法对执行效率影响很大,跟版本4差不多的c程序执行耗时大约为0.016秒, lua大致相当于c的1/8 - 1/9速度,而不是那篇文章的作者认为的只相当于c的1/60。
从上面四个不同代码大致可以看出以下问题:
1、 迭代算法是很慢的(版本1)。
2、 While的效率比for慢很多(版本23和4的比较)。
3、 临时变量比参数效率高(版本23)。
- lua不同写法速度差别很大
- 梦想和现实存在很大的差别
- 知道 InnerText 和 InnerHtml 差别很大
- 不同公司的差别
- 数据访问速度之差别
- Lua和LuaJit的差别
- IT精英上演大迁徙 南北方行业表现差别很大
- 图片画的时候差别很大 透明度问题
- oracle数据泵导出和导入大小差别很大
- 使用数据泵导出和导入文件大小差别很大
- 虽定义轻薄本,但本本之间的差别很大
- mysql数据量很大时两种不同存储过程
- LUA--无参写法
- lua类的写法
- osg debug 和Release的速度差别
- VC编译器和C#编译器的速度差异很大!!!
- APPIUMsend_keys输入太慢?用adb可以提升很大速度
- lua pairs 和 ipairs 的差别
- OpenLdap与BerkeleyDB安装过程
- iphone tutorial for programmers
- Linux的计划任务at命令
- python for in range
- 木马免杀
- lua不同写法速度差别很大
- IE6 下 DIV 最小高度不能为 0 的解决方法
- 滚动的对联广告
- 读书笔记 - Derby Reference Manual(三)
- 嵌入式系统电源管理软件比较
- linux lib 动态库(2)
- 自己写代码 - HelloHi开发流水账 五 一枚臭虫
- 什么是搜索引擎优化?
- 获取WinCE进程的内存信息