[qingfeng346] 热更新脚本C#light,ulua,Scorpio性能比较
来源:互联网 发布:板式家具下料软件 编辑:程序博客网 时间:2024/06/16 10:16
http://www.unitymanual.com/thread-32861-1-1.html
测试环境: unity4.5.2 三个脚本全是源码导入 PC :处理器 Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz 3.60GHz 内存: 8.00GB 系统 : Windows 7 64位先贴下源码:(注:cls的作者说 cls脚本作用域判断比较厉害 所以利用脚本里面的for循环 可能有点损耗cls的测试结果 更多测试结果请下载源码自行测试)
Stopwatch watch = null;
{
watch = Stopwatch.StartNew();
Script env = new Script();
env.LoadLibrary();
env.PushAssembly(typeof(GameObject).Assembly);
var token = env.LoadString(m_Scorpio);
m_ScorpioRuntime = string.Format("Scorpio 耗时:{0} ms 返回值 : {1}", watch.ElapsedMilliseconds, token);
}
{
watch = Stopwatch.StartNew();
LuaState env = new LuaState();
var token = env.DoString(m_Lua);
m_LuaRuntime = string.Format("Lua 耗时:{0} ms 返回值 : {1}", watch.ElapsedMilliseconds, token != null && token.Length > 0 ? token[0] : "null");
}
{
CLS_Environment env = new CLS_Environment(new ScriptLogger());
env.RegType(new RegHelper_Type(typeof(GameObject)));
var token = env.ParserToken(m_CLS);
var expr = env.Expr_CompilerToken(token, false);
watch = Stopwatch.StartNew();
var value = env.Expr_Execute(expr, null);
m_CLSRuntime = string.Format("cls 耗时:{0} ms 返回值 : {1} (因听说CLS解析很慢 故只计算Expr_Execute的时间)", watch.ElapsedMilliseconds, value);
}
Test1: 测试脚本自运算效率(测试结果: lua的自运算能力是最快的 毕竟是c实现的底层 而且号称世界最快的脚本引擎)
Test2:测试调用c#函数以及创建对象的效率(测试结果:ulua在调用c#函数的时候毕竟要先把对象序列化成table调用 所以比较耗时 sco和cls是直接调用的反射或者快速反射一类的 没有序列化的过程 所以可以弥补一些自运算带来的损失 )
Test3:测试调用c#深层变量的效率(测试结果:ulua在深层调用上没有想象的 掉的厉害 应该有对一个Type的序列化有缓存)
结果:
ulua 在自运算比较多的情况下还是很占优势的 毕竟是c语言的底层 而且熟知lua的人很多 论坛,教程都不少 在入门方面还是很占优势的
缺点是 出了BUG比较麻烦 ,而且出了BUG大多都是内存方面的 会导致应用程序直接崩溃 BUG不好追踪 平台方面支持 Windows,android,IOS 不支持WP 如果要做WP版本估计要费一番功夫
cls 语法同c# 优势很明显 如果怕某一块代码效率不行 或者相对比较稳定 不多动的代码 可以直接转成c# 效率立马就恢复了 而且不用担心出BUG 而且是c#语言写的 出了问题也能快速定位(平台支持 Windows,Andoird,IOS,WP等 要发布别的平台还是比较方便的)
缺点 效率好像有点问题
sco 测试结果效率还行,源码工程比较小,dll支持72K 源码很容易看懂 有点工作经验的 有个半天应该就可以看完了 而且是c#语言写的 出了问题也能快速定位 (平台支持 Windows,Andoird,IOS,WP等 要发布别的平台还是比较方便的)
缺点 语法类似javascript 而且有部分语法不相同 语言基础人数比较少
总结:三种脚本各有各的优势,毕竟只是脚本,不用太在乎效率,也不会有人拿脚本写一个游戏,只是用来做一些配置还有UI的操作,这些代码三种脚本的效率都无伤大雅
关键在个人的喜好! 动态脚本和静态脚本各有各的好处!
最后奉上测试源码:https://github.com/qingfeng346/ScriptTestor
Scorpio-CSharp源码地址:https://github.com/qingfeng346/Scorpio-CSharp
QQ群讨论:245199668
- [qingfeng346] 热更新脚本C#light,ulua,Scorpio性能比较
- 最好用Unity3d热更新脚本Scorpio-CSharp介绍
- ULua热更新
- 项目记录15--热更新ulua加入框架测试和.android热更新脚本
- U3D和ULUA热更新
- ulua热更新小demo
- uLua热更新学习笔记
- unity3d热更新插件uLua
- ulua热更新小试
- Untiy3d实现Ulua热更新
- Ulua热更新提高 <六> Ulua使用DoTween改进版
- unity3d热更新插件uLua学习整理
- Unity 热更新之ULua 踩坑篇
- Unity热更新专题(六)uLua简介
- uLua,一个Unity+Lua热更新解决方案!
- Unity热更新之ULua 踩坑篇
- unity3d热更新插件uLua学习整理
- ulua+PureMVC框架简单热更新使用
- 用Nohup命令让Linux下的程序真正在后台执行(转载)
- UIButton title换行
- python 调用httplib 访问系统 调用Pisa协议
- mysql 计算时间毫秒
- 软件开发资料大全(转载)
- [qingfeng346] 热更新脚本C#light,ulua,Scorpio性能比较
- JavaScript 使用Document记录cookie
- FFMPEG-数据结构解释(AVCodecContext,AVStream,AVFormatContext)
- IOS UITextView自适应高度
- hadoop多文件输出
- ArrayList使用注意
- 使用socket实现SSL安全访问介绍
- YUV420图像格式
- 看看样条插值区间查找函数写的多细腻