温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Unity C#中Mathf.Abs()取绝对值性能测试的示例分析

发布时间:2021-07-26 11:04:37 来源:亿速云 阅读:629 作者:小新 栏目:编程语言

小编给大家分享一下Unity C#中Mathf.Abs()取绝对值性能测试的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

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

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

Unity C#中Mathf.Abs()取绝对值性能测试的示例分析

测试代码:

using UnityEngine; using UnityEditor; using System.Diagnostics; /// <summary> /// 执行时间测试 /// ZhangYu 2019-04-04 /// </summary> 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++) {  a = Mathf.Abs(a);  }  watch.Stop();  string msgMathfAbs = string.Format("Mathf.Abs: {0}s", watch.Elapsed);  // 自己实现Abs  watch.Reset();  watch.Start();  for (int i = 0; i < times; i++) {  a = MyAbs(a);  }  watch.Stop();  string msgMyAbs = string.Format("自定义Abs: {0}s", watch.Elapsed);  // 三目运算符Abs  watch.Reset();  watch.Start();  for (int i = 0; i < times; i++) {  a = a < 0 ? -a : a;  }  watch.Stop();  string msg3Abs = string.Format("三目运算符Abs: {0}s", watch.Elapsed);  print(msgMathfAbs);  print(msgMyAbs);  print(msg3Abs);  }  // == 执行次数:10000000  // Mathf.Abs  // (1)0.2803558s  // (2)0.2837749s  // (3)0.2831089s  // (4)0.2829929s  // (5)0.2839846s  // 自定义Abs  // (1)0.2162217s  // (2)0.2103635s  // (3)0.2103390s  // (4)0.2092863s  // (5)0.2097648s  private static float MyAbs(float a) {  return a < 0 ? -a : a;  }  // 三目运算符Abs  // (1)0.0893028s  // (2)0.1000181s  // (3)0.1017959s  // (4)0.1001749s  // (5)0.1005737s }

Mathf.Abs()源码:

// Returns the absolute value of /f/. public static float Abs(float f) { return (float)Math.Abs(f); } // Returns the absolute value of /value/. public static int Abs(int value) { return Math.Abs(value); }

官方Mathf部分源码:

Unity C#中Mathf.Abs()取绝对值性能测试的示例分析

Unity C#中Mathf.Abs()取绝对值性能测试的示例分析

以上是“Unity C#中Mathf.Abs()取绝对值性能测试的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI