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

小鱼儿 2022-06-11 02:25 266阅读 0赞

转自 http://blog.csdn.net/caiguowu/article/details/6911615

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

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

[cpp] view plain copy

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

发表评论

表情:
评论列表 (有 0 条评论,266人围观)

还没有评论,来说两句吧...

相关阅读