Unity3D 关于uLua在Unity3D的性能测试

一:实例化并带清空对象的对比

- lua中实例化5w个空对象并且直接删除

function main.test( )
    print('lua start at:'..Time.realtimeSinceStartup)
    for i=1,50000 do
        local go = GameObject('init')
        GameObject.DestroyImmediate(go)
    end
    print('lua end at:'..Time.realtimeSinceStartup)
end

Unity3D 关于uLua在Unity3D的性能测试

平均大概都要3.3秒


- mono中实例化5w个空对象并且直接删除

Debug.Log("mono start at:"+Time.realtimeSinceStartup);
		for(int i =0; i < 50000; i++){
			GameObject go = new GameObject("init");
			DestroyImmediate(go);
		}
		Debug.Log("mono end at:"+Time.realtimeSinceStartup);

Unity3D 关于uLua在Unity3D的性能测试

大概平均下来是0.75秒


二:调用方法的对比

- lua中调用方法并做一个简单的处理,5w次

function main.testCall(go)
    go.transform.localPosition = Vector3(0,0,0)
end

Unity3D 关于uLua在Unity3D的性能测试

耗时:1.64秒


- mono中调用方法做一个简单处理,5w次

void TestInstantiate(){
    	transform.localPosition = new Vector3(0, 0, 0);
    }

Unity3D 关于uLua在Unity3D的性能测试

耗时:0.01秒


三:总结

从2组对比来看,第一组lua是mono的4.4倍耗时,第二组lua是mono的164倍耗时.


3.1:可能第一直觉,lua中go.transform会实时去Get Transform的脚本,那么我们优化一下

function main.testCall(go)
    go.localPosition = Vector3(0,0,0)
end

把transform缓存一下,测试时间消耗:1.3秒

3.2:实际上上段优化中还是存在Vector3(0,0,0)是构造一个新对象,那么我们直接用Vector3.zero呢

function main.testCall(go)
    go.localPosition = Vector3.zero
end

耗时:0.86秒

3.3:最后我们把localPosistion也缓存一下

function main.testCall(pos)
    pos = Vector3.zero
end

耗时:0.35秒


把指定的'对象'先取出来,在lua中都能提高很高的执行效率.因为通过" . " 去获取一个value时候,实际上是遍历了table把里面的key给搜索一遍.

至于在Unity3D中,我个人还是觉得,如果是涉及到update每帧都要处理的逻辑.还是mono妥妥的.实际上我们可以通过缓存这些变量对象在lua中.可以最大限度地减少性能消耗.



更多相关文章
  • 文/阳光 持续了一年的互联网金融狂热在2014年年初终于降温,甚至暴露出其互联网思维.高科技工具和金融创新等金字招牌包装下的种种"败絮"来. 据媒体的最新报道,仅仅是过去6月份的一个月内,已经有6家网贷平台跑路失联.国内1200多家过去一年中新成立的P2P网贷平台,有148个平台 ...
  • 日前,全球最大的漏洞响应平台——补天漏洞响应平台(butian.360.cn)公开了一个中国人寿网站的struts2漏洞.该漏洞虽然得到紧急修复,却再次引发行业对漏洞修复迟缓的关注.   11月30日,白帽子“帅气凌云”通过补天漏洞响应平台向中国人寿网站提交了一个struts2的安全漏洞;12月10 ...
  • 易网科技讯 5月8日消息,易车网(BITA)今日发布了截至2014年3月31日的第一季度财报.财报数据显示,易车网第一季度营收人民币3.534亿元(约合5690万美元),同比增长47.6%:净利润人民币3690万元(约合590万美元),同比增长87.4%. 第一财季业绩摘要: 营收为人民币3.534 ...
  • 网友购买的"问题"车票中国江西网讯记者李运辉报道: 25日,网友发布微博称在12306官网上买了车票,上车时却没有找到票面上显示的车厢.
  • 随着手机的日益普及,手机安全越来越受到手机用户们的广泛关注.手机安全主要包括两方面内容,一方面是指来自手机病毒的侵害:另一方面是指因他人为谋取利益而造成的侵害,包括骚扰电话.骚扰短信.诈骗.信息盗窃.泄密等.     去年"五一"期间爆发了一场彩信病毒,很多手机"中毒& ...
  • 本工具类经过测试可用,之前写的没有使用CipherInputStream和CipherOutputStream,生成的加密文件与源文件大小不一致,加密时没有问题,解密时总是抛出如下异常: Exception in thread "main" javax.crypto.BadPad ...
一周排行