| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> XLua性能优化——transform、Vector3 -> 正文阅读 |
|
[游戏开发]XLua性能优化——transform、Vector3 |
优化技巧 对于c#的Struct还是少用,尽量封装静态方法调用,性能会更好 例如设置位置 public static void SetXYZ(this Transform transform, float x, float y, float z) { Vector3 newPosition = new Vector3(x, y, z); transform.position = newPosition; } XLua的Vector3自带的性能优化 在XLua中transform.position = {x=1, y=2, z=3}也是可以对坐标进行赋值的,但是效率不及静态c#方法 代码在WrapPusher.cs下 测评 transform.position vs transform:getWorldPos() transform:getWorldPos()性能提升2.1倍 transform.position = pos vs transform:setWorldPos(x, y, z) transform:setWorldPos(x, y, z)性能提升2.6倍 Vector3运算
耗时:3075, 2865, 116, 83
耗时分别为:809, 140, 149 结论:数学运算上性能,LuaVector3 < UnityVector3 < C#的x,y,z形式的静态方法 返回Vector3和x, y, z 返回Vector3耗时:203ms,返回x,y,z耗时:71ms 数值访问
耗时:278, 22, 23, 8 性能(UnityEngine.Vector3.x) < 性能(luaObj.x) == 性能(table.x) LuaVector的性能消耗在table的查询 网上的测评 方式1:gameobject.transform.position = Vector3.New(1,2,3) 方式2:gameobject:SetPos(Vector3.New(1,2,3)) 方式3:gameobject:SetPos2(1,2,3) 方式4:GOUtil.SetPos(gameobject, Vector3.New(1,2,3)) 方式5:GOUtil.SetPos2(gameobjectid, Vector3.New(1,2,3)) 方式6:GOUtil.SetPos3(gameobjectid, 1,2,3) 优化方案
性能对比小结 1 x,y,z形式的C#静态方法 > Lua中使用原生Vector3 > Lua Vector3 2 x,y,z形式的Lua方法 > x,y,z形式的C#静态方法,注明:运算越复杂性能提升越不明显 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 10:41:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |