前言
之前有人提到过取绝对值时 直接写三目运算符比用Mathf.Abs()效率高 没觉得能高太多
今天测了一下 真是不测不知道 一测吓一跳 直接写三目运算符比Mathf.Abs()效率高2-3倍
这性能差距有点不太合理啊! 看下源码发现 很多Mathf的方法就是多封装了一层Math里的方法 把double型转成float型了 即便很简单得方法也没有重新实现
官方有点偷懒了 所以性能差距才会这么大 以后要求性能高的地方要注意 老老实实写一遍 能提升不少性能
测试代码:
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();
<