DrawLine()

    for(int i=0;i<10000;i++)
    {
       LineTo1(....);
    }
    for(i=0;i<10000;i++)
    {
       LineTo2(....);
    }

和下面的
DrawLine()

    for(int i=0;i<10000;i++)
    {
       LineTo1(....);
       LineTo2(....);
    }

两个函数速度大概相差多少呢?请详细讲解一下,谢谢!

解决方案 »

  1.   

    看你的LineTo1的速度如何,如果LineTo1用的时间远远大于i++和i<1000等操作的时间,则两个函数速度差别会小到根本测量不出来,因为瓶颈在LineTo1和LineTo2上,虽然第二种方法少了一遍循环的时间,但是循环时间远远小雨LineTo1和LineTo2的时间,所以差别极小。一般情况下,LineTo1的速度比循环慢的多,所以一般两种写法没有速度方面的区别。如果考虑CPU cache容量的原因,说不定第一种写法更快。
      

  2.   

    1、要执行20000次i++和比较(i<10000)
    2、执行10000次i++和比较。
    其他的应该差不多。
      

  3.   

    谢谢各位的讲解,
    还请问wulong:编译器优化的法则是什么呢?