代码 2-12:整数与浮点数运算速度测试(<SpeedTest>\Program.cs)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SpeedTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //Pow()方法测试
            double resultDouble = 0D;
            Console.Write(">>>>浮点幂运算时间:");
            long startTime = DateTime.Now.Ticks;
            for (int i = 1; i <= 10000000; i++)
            {
                resultDouble = Math.Pow(2D, 2D);
            }
            Console.Write(DateTime.Now.Ticks-startTime);
            Console.WriteLine();
            //Power()方法测试
            Console.Write(">>>>整数幂运算时间:");
            long resultLong = 0L;
            startTime = DateTime.Now.Ticks;
            for (int i = 1; i <= 10000000; i++)
            {
                resultLong = Power(2L, 2);
            }
            Console.WriteLine(DateTime.Now.Ticks-startTime);
        }
        //整数求幂运算
        static long Power(long x, int y)
{
    if (y < 0)
    {
        return 0;
    }
    else if (y==0)
    {
        return 1;
    }
    else
    {
    long r=1;
        for (int i = 1; i <= y; i++)
        {
            r = r * x;
        }
        return r;
    }
}
}
}

我们暂时先不考虑Power()方法中的代码,在逐渐学习的过程中,你会很容易理解这些代码的功能。

图2-7 为其中一次运算的结果,实际上,在我的计算机中每次执行此程序的结果都差不多,使用Pow()方法所需的时间都是Power()方法的8倍以上。(不同的计算机运行速度可能会有一定的差别。)

图2-7

由本例我们可以看出,在大量的运算过程中,整数运算的确比浮点数运算的速度要快得多,这一点在一些大型程序中应格外注意,比如在游戏中角色的位置计算,速度将会使游戏运行更流畅。

使用整数还是浮点数?我们必须根据项目中数据的特点和要求,以及对于速度和精度的需求等各方面因素的综合衡量来决定。