最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年04月15日 08:35:56   作者:冰封百度  
這篇文章主要給大家介紹了關(guān)于Unity C# Mathf.Abs()取絕對值性能測試的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Unity C#具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

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

這性能差距有點不太合理?。?看下源碼發(fā)現(xiàn) 很多Mathf的方法就是多封裝了一層Math里的方法 把double型轉(zhuǎn)成float型了 即便很簡單得方法也沒有重新實現(xiàn)

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

測試代碼:

using UnityEngine;
using UnityEditor;
using System.Diagnostics;

/// <summary>
/// 執(zhí)行時間測試
/// 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/執(zhí)行")]
 private static void Execute() {
 watch = new Stopwatch();

 // 數(shù)據(jù)
 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);

 // 自己實現(xiàn)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);
 }

 // == 執(zhí)行次數(shù):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://www.fzitv.net/article/159706.htm...

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • C#實現(xiàn)掃描槍掃描二維碼并打印(實例代碼)

    C#實現(xiàn)掃描槍掃描二維碼并打印(實例代碼)

    這篇文章主要介紹了C#實現(xiàn)掃描槍掃描二維碼并打印,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • C#的循環(huán)語句集錦及案例詳解

    C#的循環(huán)語句集錦及案例詳解

    這篇文章主要介紹了C#中的基本循環(huán):while循環(huán)、for循環(huán)和foreach循環(huán),大家都知道循環(huán)結(jié)構(gòu)可以簡化程序編碼,更好地實現(xiàn)理想的效果,并結(jié)合案例給大家講解,需要的朋友可以參考下
    2015-07-07
  • C#實現(xiàn)簡易猜數(shù)字游戲

    C#實現(xiàn)簡易猜數(shù)字游戲

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)簡易猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • C#使用融合通信API發(fā)送手機短信息

    C#使用融合通信API發(fā)送手機短信息

    融合云通信服務(wù)平臺,為企業(yè)提供全方位通信服務(wù),發(fā)送手機短信是其一項核心功能,本文將講述如何使用融合云服務(wù)API為終端手機用戶發(fā)送短信信息,并使用?C#?進(jìn)行實現(xiàn),感興趣的可以了解下
    2024-11-11
  • string與stringbuilder兩者的區(qū)別

    string與stringbuilder兩者的區(qū)別

    今天小編就為大家分享一篇關(guān)于string與stringbuilder兩者的區(qū)別,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • C#中實現(xiàn)判斷某個類是否實現(xiàn)了某個接口

    C#中實現(xiàn)判斷某個類是否實現(xiàn)了某個接口

    這篇文章主要介紹了C#中實現(xiàn)判斷某個類是否實現(xiàn)了某個接口,本文給出了多種判斷方法,需要的朋友可以參考下
    2015-06-06
  • 使用Nopcommerce為商城添加滿XX減XX優(yōu)惠券功能

    使用Nopcommerce為商城添加滿XX減XX優(yōu)惠券功能

    中秋國慶節(jié)眼看到跟前了,很多商城都借此機會搞促銷活動,什么滿200減80送優(yōu)惠券等活動,基于后臺程序是怎么實現(xiàn)的呢?下面腳本之家小編帶領(lǐng)大家一起學(xué)習(xí)吧
    2015-09-09
  • C#實現(xiàn)創(chuàng)建,刪除,查找,配置虛擬目錄實例詳解

    C#實現(xiàn)創(chuàng)建,刪除,查找,配置虛擬目錄實例詳解

    這篇文章主要介紹了C#創(chuàng)建,刪除,查找,配置虛擬目錄的方法,以實例形式較為詳細(xì)的分析了C#針對虛擬目錄的創(chuàng)建、刪除、查找等相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • C#使用Stack<T>進(jìn)行堆棧設(shè)計的實現(xiàn)

    C#使用Stack<T>進(jìn)行堆棧設(shè)計的實現(xiàn)

    堆棧代表了一個后進(jìn)先出的對象集合,當(dāng)您需要對各項進(jìn)行后進(jìn)先出的訪問時,則使用堆棧,本文主要介紹了C#使用Stack<T>類進(jìn)行堆棧設(shè)計的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),感興趣的可以了解一下
    2024-03-03
  • c# 實現(xiàn)位圖算法(BitMap)

    c# 實現(xiàn)位圖算法(BitMap)

    這篇文章主要介紹了c# 如何實現(xiàn)位圖算法(BitMap),文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07

最新評論

绥阳县| 福海县| 信阳市| 综艺| 白朗县| 开江县| 杭州市| 昔阳县| 禄丰县| 河曲县| 郧西县| 隆子县| 察雅县| 读书| 大石桥市| 林周县| 新绛县| 万全县| 河津市| 长治市| 尉犁县| 攀枝花市| 日喀则市| 正安县| 长葛市| 莱阳市| 永年县| 柞水县| 双桥区| 建阳市| 无极县| 金堂县| 石家庄市| 旺苍县| 太仆寺旗| 墨竹工卡县| 浮梁县| 乐亭县| 阿城市| 安化县| 岐山县|