*****比較if-else與三目運算符的效率*****
using System;using System.Collections.Generic;using System.Text;using System.Reflection;using System.Diagnostics; namespace ConsoleApplication1{ class Program { static void Main() { compare(); } private static void compare() { Console.WriteLine("*****比較if-else與三目運算符的效率*****"); for (int j = 1; j < 20; j++) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("這是第" + j + "次測試。"); Console.ForegroundColor = ConsoleColor.White; Stopwatch time1 = new Stopwatch(); time1.Start(); for (int i = 0; i < 100000000; i++) { int temp = 0; if (temp == 1) temp = 1; else temp = 0; } time1.Stop(); TimeSpan t1 = time1.Elapsed; Console.WriteLine("if-else執行時間是:"+t1.ToString()); time1.Reset(); Stopwatch time2 = new Stopwatch(); time2.Start(); for (int i = 0; i < 100000000; i++) { int temp = 0; temp = temp == 0 ? 1 : 0; } time2.Stop(); TimeSpan t2 = time2.Elapsed; Console.WriteLine("三目運算符執行時間是:" + t2.ToString()); time2.Reset(); string conclusion = (t1 < t2) ? "if-else效率高" : "三目元算符效率高"; float f1 = t1.Ticks; float f2 = t2.Ticks; float efficiency = (f1 < f2) ? f2 / f1 : f1 / f2; Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("結論是:" + conclusion + ",效率比是:" + efficiency.ToString()); } Console.WriteLine("*****按下回車鍵關閉窗口*****"); Console.ReadLine(); } }}
結論是:三目元算符效率高,效率比是:1.085664
這是第16次測試。
if-else執行時間是:00:00:00.4018908
三目運算符執行時間是:00:00:00.3699753
結論是:三目元算符效率高,效率比是:1.086264
這是第17次測試。
if-else執行時間是:00:00:00.4021569
三目運算符執行時間是:00:00:00.3696670
結論是:三目元算符效率高,效率比是:1.08789
這是第18次測試。
if-else執行時間是:00:00:00.4020547
三目運算符執行時間是:00:00:00.3708227
結論是:三目元算符效率高,效率比是:1.084224
這是第19次測試。
if-else執行時間是:00:00:00.4017543
三目運算符執行時間是:00:00:00.3695815
結論是:三目元算符效率高,效率比是:1.087052
*****按下回車鍵關閉窗口*****
========================
所以我的問題來了,爲什麽三目運算符的效率高呢?
[解决办法]
扩展if else
public static T If<T>(this T t, Predicate<T> predicate, Action<T> action) where T: class
{
if(t == null) throw new ArgumentNullException();
if (predicate(t)) action(t);
return t;
}
[解决办法]
1.表達式1:為真的概率 比 表達式2 為真的概率要大的話
如果你的條件是:||或 && 來結合的話 按如下的寫法:
if(表達式1||表達式2)
{
}
Else
{
}
If(表達式2&& 表達式1)
{
}
Else
{
}
要比其相應得其它組合的運行效率高些,
總之 如果條件是以 || 來結合的 那就把為真率高的放在前面
如果條件是以 && 來結合的 那就把為真率低的放在前面 這樣有助於提高程式運行效率.
[解决办法]
#include <stdio.h>intmain(){ int a = 1, b = 2, c; if(a < b) c = a; else c = b; c = a < b ? a : b; return 0;}
[解决办法]
*****比較if-else與三目運算符的效率*****
這是第1次測試。
if-else執行時間是:00:00:00.2980850
三目運算符執行時間是:00:00:00.3146640
結論是:if-else效率高,效率比是:1.055618
這是第2次測試。
if-else執行時間是:00:00:00.2967013
三目運算符執行時間是:00:00:00.3218017
結論是:if-else效率高,效率比是:1.084598
這是第3次測試。
if-else執行時間是:00:00:00.2982652
三目運算符執行時間是:00:00:00.3127492
結論是:if-else效率高,效率比是:1.048561
這是第4次測試。
if-else執行時間是:00:00:00.2945572
三目運算符執行時間是:00:00:00.3131118
結論是:if-else效率高,效率比是:1.062991
這是第5次測試。
if-else執行時間是:00:00:00.2959158
三目運算符執行時間是:00:00:00.3128791
結論是:if-else效率高,效率比是:1.057325
這是第6次測試。
if-else執行時間是:00:00:00.2953048
三目運算符執行時間是:00:00:00.3164421
結論是:if-else效率高,效率比是:1.071578
這是第7次測試。
if-else執行時間是:00:00:00.2967265
三目運算符執行時間是:00:00:00.3191240
結論是:if-else效率高,效率比是:1.075482
這是第8次測試。
if-else執行時間是:00:00:00.2977990
三目運算符執行時間是:00:00:00.3252131
結論是:if-else效率高,效率比是:1.092056
這是第9次測試。
if-else執行時間是:00:00:00.2998663
三目運算符執行時間是:00:00:00.3112348
結論是:if-else效率高,效率比是:1.037912
這是第10次測試。
if-else執行時間是:00:00:00.2958867
三目運算符執行時間是:00:00:00.3209681
結論是:if-else效率高,效率比是:1.084767
這是第11次測試。
if-else執行時間是:00:00:00.2975353
三目運算符執行時間是:00:00:00.3125643
結論是:if-else效率高,效率比是:1.050512
這是第12次測試。
if-else執行時間是:00:00:00.2964611
三目運算符執行時間是:00:00:00.3082606
結論是:if-else效率高,效率比是:1.039801
這是第13次測試。
if-else執行時間是:00:00:00.2998453
三目運算符執行時間是:00:00:00.3173735
結論是:if-else效率高,效率比是:1.058457
這是第14次測試。
if-else執行時間是:00:00:00.2959563
三目運算符執行時間是:00:00:00.3090320
結論是:if-else效率高,效率比是:1.044181
這是第15次測試。
if-else執行時間是:00:00:00.2947156
三目運算符執行時間是:00:00:00.3122807
結論是:if-else效率高,效率比是:1.0596
這是第16次測試。
if-else執行時間是:00:00:00.2953188
三目運算符執行時間是:00:00:00.3170430
結論是:if-else效率高,效率比是:1.073562
這是第17次測試。
if-else執行時間是:00:00:00.2992732
三目運算符執行時間是:00:00:00.3093373
結論是:if-else效率高,效率比是:1.033628
這是第18次測試。
if-else執行時間是:00:00:00.2988488
三目運算符執行時間是:00:00:00.3134473
結論是:if-else效率高,效率比是:1.048849
這是第19次測試。
if-else執行時間是:00:00:00.2970170
三目運算符執行時間是:00:00:00.3082989
結論是:if-else效率高,效率比是:1.037984
*****按下回車鍵關閉窗口*****
[解决办法]
int temp = 0;
if (temp == 1)
temp = 1;
else
temp = 0;
编译器居然没把这段代码优化掉,真诡异
再说你这个代码本身写的也有问题,可以优化成
int temp = 0;
if (temp != 1)
temp = 0;
[解决办法]