*****比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;
[解决办法]