博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity中各类物理投射性能横向比较
阅读量:5922 次
发布时间:2019-06-19

本文共 1061 字,大约阅读时间需要 3 分钟。

最近在优化摄像机部分代码,抽了个时间对物理投射这块进行了系统性的测试,发现了不少东西

 

测试工程下载地址:

 

 

测试方式:

在某半径内随机若干Cube,然后以中心点发射各种投射进行测试

使用Unity5.4.1版本,并用Profiler和StopWatch进行测试并截图,比较性能和GC差异

 

由于胶囊之类的投射实在太慢了,我改用1000次调用进行测试,NonAlloc缓存数组长度为20

一些投射都做了距离限定

 脚本基本如下:

for (int i = 0; i < 1000; i++){    Physics.BoxCastAll(transform.position, Vector3.one * 2f, Vector3.forward, Quaternion.identity, 0);}

 

 

 

测试结果: 

名称 速度 GC Alloc
Raycast 1ms -
RaycastNonAlloc 2ms -
RaycastAllTest 2ms 273.4KB
Linecast 1ms -
BoxCastTest 17ms -
BoxCastNonAllocTest 18ms -
BoxCastAllTest 20ms 1.5MB
CheckBoxTest 1ms -
OverlapBoxTest 62ms 2.4MB
OverlapBoxNonAllocTest 24ms -
CapsuleCastTest 162ms -
CapsuleCastNonAllocTest 227ms -
CapsuleCastAllTest 336ms 12.7MB
CheckCapsuleTest 1ms -
OverlapCapsuleTest 84ms 2.1MB
OverlapCapsuleNonAllocTest 30ms -
SphereCastTest 96ms -
SphereCastNonAllocTest 171ms -
SphereCastAllTest 226ms 8.8MB
CheckSphereTest 1ms -
OverlapSphereTest 33ms 1.5MB
OverlapSphereNonAllocTest 16ms -

 

 

 

射线和线段的开销非常小,撇开这个可以发现,性能消耗的顺序是这样的

从小到大:

CheckXXX -> OverlapXXX -> XXXCast

其中Check系列方法的开销极小

 

从投射物来看,从小到大分别是:Box > Sphere > Capsule

转载地址:http://vxivx.baihongyu.com/

你可能感兴趣的文章
S5P4418 uboot 分析
查看>>
Eclipse格式化代码换行、删除空行
查看>>
uva 11324 The Largest Clique(图论-tarjan,动态规划)
查看>>
Swift - 微调器或叫步进器(UIStepper)的用法
查看>>
微信公众平台开发问答
查看>>
Project Euler 78:Coin partitions
查看>>
Android调用Webservice发送文件
查看>>
HDU--3081--Marriage Match II--最大匹配,匈牙利算法
查看>>
至少有6000个程序员比我勤奋
查看>>
SOLID原则
查看>>
Sublime必备插件
查看>>
MyBatis入门(五)---延时加载、缓存
查看>>
js原生设计模式——2面向对象编程之闭包2
查看>>
Going Home(最大匹配km算法)
查看>>
shell统计
查看>>
第六篇 ORACLE EBS用户界面通用元素或功能背后的道理解析
查看>>
.Net中的反应式编程(Reactive Programming)
查看>>
Objective-C内存管理教程和原理剖析(四)
查看>>
OC self和super
查看>>
大叔也说Xamarin~Android篇~Activity之间传递数组
查看>>