c#绝对值函数图像_关于Unity C# Mathf.Abs()取绝对值性能测试详解|chu

本文通过性能测试对比,揭示了在Unity中直接使用三目运算符求绝对值比使用Mathf.Abs()效率高出2-3倍。作者分析了Mathf.Abs()的源码,指出其内部调用了Math方法并进行类型转换,导致性能下降。测试结果显示,自定义的Abs函数和三目运算符方式在执行速度上有明显优势。
摘要由CSDN通过智能技术生成

前言

之前有人提到过取绝对值时 直接写三目运算符比用Mathf.Abs()效率高 没觉得能高太多

今天测了一下 真是不测不知道 一测吓一跳 直接写三目运算符比Mathf.Abs()效率高2-3倍

这性能差距有点不太合理啊! 看下源码发现 很多Mathf的方法就是多封装了一层Math里的方法 把double型转成float型了 即便很简单得方法也没有重新实现

官方有点偷懒了 所以性能差距才会这么大 以后要求性能高的地方要注意 老老实实写一遍 能提升不少性能

20190926_5d8ba740d257c.jpg

测试代码:

using UnityEngine; using UnityEditor; using System.Diagnostics; /// /// 执行时间测试 /// ZhangYu 2019-04-04 /// public class TimeTest : MonoBehaviour { public int executeTimes = 1; private static Stopwatch watch; private void OnValidate() { times = executeTimes; } private static int times = 1; [MenuItem("CONTEXT/TimeTest/执行")] private static void Execute() { watch = new Stopwatch(); // 数据 float a = 1; // Mathf.Abs watch.Reset(); watch.Start(); for (int i = 0; i < times; i++) {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值