*****比較if-else與三目運算符的效率*****
- C# code
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(); } }}您新建一個控制臺程序,然後放入上述代碼執行。
我運行的結果如下(運行時間可能不一樣,不過結論都是一樣的)
*****比較if-else與三目運算符的效率*****
這是第1次測試。
if-else執行時間是:00:00:00.4057753
三目運算符執行時間是:00:00:00.3721558
結論是:三目元算符效率高,效率比是:1.090337
這是第2次測試。
if-else執行時間是:00:00:00.4042576
三目運算符執行時間是:00:00:00.3778070
結論是:三目元算符效率高,效率比是:1.070011
這是第3次測試。
if-else執行時間是:00:00:00.4047548
三目運算符執行時間是:00:00:00.3696018
結論是:三目元算符效率高,效率比是:1.09511
這是第4次測試。
if-else執行時間是:00:00:00.4016809
三目運算符執行時間是:00:00:00.3694739
結論是:三目元算符效率高,效率比是:1.08717
這是第5次測試。
if-else執行時間是:00:00:00.4046356
三目運算符執行時間是:00:00:00.3712424
結論是:三目元算符效率高,效率比是:1.08995
這是第6次測試。
if-else執行時間是:00:00:00.4015913
三目運算符執行時間是:00:00:00.3709766
結論是:三目元算符效率高,效率比是:1.082525
這是第7次測試。
if-else執行時間是:00:00:00.4050849
三目運算符執行時間是:00:00:00.3707200
結論是:三目元算符效率高,效率比是:1.092698
這是第8次測試。
if-else執行時間是:00:00:00.4048344
三目運算符執行時間是:00:00:00.3703526
結論是:三目元算符效率高,效率比是:1.093105
這是第9次測試。
if-else執行時間是:00:00:00.4026887
三目運算符執行時間是:00:00:00.3697847
結論是:三目元算符效率高,效率比是:1.088982
這是第10次測試。
if-else執行時間是:00:00:00.4053084
三目運算符執行時間是:00:00:00.3703975
結論是:三目元算符效率高,效率比是:1.094252
這是第11次測試。
if-else執行時間是:00:00:00.4023193
三目運算符執行時間是:00:00:00.3702872
結論是:三目元算符效率高,效率比是:1.086506
這是第12次測試。
if-else執行時間是:00:00:00.4036262
三目運算符執行時間是:00:00:00.3694859
結論是:三目元算符效率高,效率比是:1.092399
這是第13次測試。
if-else執行時間是:00:00:00.4018123
三目運算符執行時間是:00:00:00.3697152
結論是:三目元算符效率高,效率比是:1.086816
這是第14次測試。
if-else執行時間是:00:00:00.4028462
三目運算符執行時間是:00:00:00.3695552
結論是:三目元算符效率高,效率比是:1.090084
這是第15次測試。
if-else執行時間是:00:00:00.4023199
三目運算符執行時間是:00:00:00.3705751
結論是:三目元算符效率高,效率比是: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
{
}
要比其相應得其它組合的運行效率高些,
總之 如果條件是以 || 來結合的 那就把為真率高的放在前面
如果條件是以 && 來結合的 那就把為真率低的放在前面 這樣有助於提高程式運行效率.
[解决办法]
[解决办法]
没深究过 以前一直认为三目运算符高些~~~
看到网上有的对
- C/C++ code
#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;
[解决办法]
