2的指数次方算法对比

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.结果

 

posted @ 2018-02-26 15:05  zslm___  阅读(1412)  评论(0)    收藏  举报