优化:浮点型转整型 (通过测试验证)

转自 http://blog.youkuaiyun.com/caiguowu/article/details/6911615


本文主要是测试验证:赋值与内嵌汇编的浮点型转整型,在效率上的差别,哈,其实,代码主要还是清晰,如果不是一个大的循环,也没必要这么做,毕竟计算机的运行速度,快的永远超出我们能感觉到的范围。

        所以,本文只是提供一种优化的途径,与大家学习和交流!优化:浮点型转整型 <wbr>(通过测试验证)

 

[cpp]  view plain copy
  1. <span style="font-size:16px;">/******************************************************************** 
  2. ** 创建人: 蔡国武 
  3. ** 日  期: 2011/5/27 14:21 
  4. ** 版  本: 1.0 
  5. ** 描  述: 代码性能优化与技巧----测试 
  6.                 测试:浮点型赋值强转整型 与 内嵌汇编转整型 在效率上的差别,经测试结果如下: 
  7.  
  8.                    直接强转花费时间1123 
  9.                    汇编指令花费时间267 
  10.  
  11.                    可见:效率近4倍之差,还是有点可观的 
  12.  
  13.             原因是:float fValue;  int nValue = fValue; 可能是直接赋值,编译器会去调用内部的_ftol(),从而导致性 
  14.  
  15.                            能降低。 
  16.  
  17.  ** 应  用:  将float fValue;  int nValue = fValue;  优化成:  _asm{ fld fValue; fistp nValue;} 
  18.   
  19. **************************** 修改记录 ****************************** 
  20. ** 修改人: 
  21. ** 日  期: 
  22. ** 描  述: 
  23. ********************************************************************/  
  24.   
  25.   
  26. namespace OptimizationTest  
  27. {  
  28.  const int MAXNUM = 10000;  
  29.   
  30.  void OptTest_ftol(float fValue)  
  31.  {  
  32.   int nValue;  
  33.   int tm = GetTickCount();  
  34.   for (int i = 0; i < MAXNUM; ++i)  
  35.   {  
  36.    for (int j = 0; j < MAXNUM; ++j)  
  37.    {  
  38.     int nValue = fValue;  
  39.    }  
  40.   }  
  41.   cout << "直接强转花费时间" << GetTickCount() - tm<< endl;  
  42.   
  43.   
  44.   tm = GetTickCount();  
  45.   for (int i = 0; i < MAXNUM; ++i)  
  46.   {  
  47.    for (int j = 0; j < MAXNUM; ++j)  
  48.    {  
  49.     _asm  
  50.     {  
  51.      fld fValue;  
  52.      fistp nValue;  
  53.     }  
  54.    }  
  55.   }  
  56.   cout << "汇编指令花费时间" << GetTickCount() - tm<< endl;  
  57.  }  
  58. }  
  59. </span>  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值