国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

關于Unity C# Mathf.Abs()取絕對值性能測試詳解

2020-01-24 00:05:57
字體:
來源:轉載
供稿:網友

前言

之前有人提到過取絕對值時 直接寫三目運算符比用Mathf.Abs()效率高 沒覺得能高太多

今天測了一下 真是不測不知道 一測嚇一跳 直接寫三目運算符比Mathf.Abs()效率高2-3倍

這性能差距有點不太合理啊! 看下源碼發現 很多Mathf的方法就是多封裝了一層Math里的方法 把double型轉成float型了 即便很簡單得方法也沒有重新實現

官方有點偷懶了 所以性能差距才會這么大 以后要求性能高的地方要注意 老老實實寫一遍 能提升不少性能

測試代碼:

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部分源碼:

更高性能取絕對值方法:
http://m.survivalescaperooms.com/article/159706.htm...

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东平县| 樟树市| 延寿县| 库车县| 仁化县| 长子县| 张家界市| 宁阳县| 南开区| 错那县| 吐鲁番市| 正安县| 清新县| 鄯善县| 宝丰县| 新营市| 凤山市| 龙岩市| 岱山县| 库伦旗| 玉树县| 顺义区| 武城县| 梁河县| 南昌市| 沅陵县| 周至县| 张家川| 宁晋县| 德惠市| 铜陵市| 浠水县| 浙江省| 宣化县| 九龙城区| 登封市| 库车县| 乌兰县| 庆阳市| 阳原县| 乌兰县|