1. 算法选择:
1)使用Math.Power算法
2)按位左移
3)查询预生成字典
private const int TenMillion = 10000 * 1000; private static Dictionary<int,int> Power2Dict=new Dictionary<int, int>() { {1,2},//2^1 {2,4},//2^2 {3,8},//2^3 {4,16}, {5,32}, {6,64}, {7,128}, {8,256}, {9,512}, {10,1024}, {11,2048}, }; public static void Excute() { var ms = ActionHelper.ComputeActionCostMilliseconds(() => { for (int j = 0; j < TenMillion; j++) { int a = 9; var i = (int)Math.Pow(2, a); } }); Console.WriteLine("使用Math.Power算法在大循环所消耗时间为:{0}ms", ms); ms = ActionHelper.ComputeActionCostMilliseconds(() => { for (int j = 0; j < TenMillion; j++) { int a = 9; var i2 = 1 << a; } }); Console.WriteLine("使用移位算法在大循环所消耗时间为:{0}ms", ms); ms = ActionHelper.ComputeActionCostMilliseconds(() => { for (int j = 0; j < TenMillion; j++) { int a = 9; var i2 = Power2Dict[a]; } }); Console.WriteLine("使用预处理字典算法在大循环所消耗时间为:{0}ms", ms);
2.结果