优化:浮点型转整型 (通过测试验证)
转自 http://blog.csdn.net/caiguowu/article/details/6911615
本文主要是测试验证:赋值与内嵌汇编的浮点型转整型,在效率上的差别,哈,其实,代码主要还是清晰,如果不是一个大的循环,也没必要这么做,毕竟计算机的运行速度,快的永远超出我们能感觉到的范围。
所以,本文只是提供一种优化的途径,与大家学习和交流!![优化:浮点型转整型 <wbr>(通过测试验证)][wbr]
[cpp] view plain copy
- /********************************************************************
- ** 创建人: 蔡国武
- ** 日 期: 2011/5/27 14:21
- ** 版 本: 1.0
- ** 描 述: 代码性能优化与技巧——测试
- 测试:浮点型赋值强转整型 与 内嵌汇编转整型 在效率上的差别,经测试结果如下:
- 直接强转花费时间1123
- 汇编指令花费时间267
- 可见:效率近4倍之差,还是有点可观的
- 原因是:float fValue; int nValue = fValue; 可能是直接赋值,编译器会去调用内部的_ftol(),从而导致性
- 能降低。
- ** 应 用: 将float fValue; int nValue = fValue; 优化成: _asm{ fld fValue; fistp nValue;}
- **************************** 修改记录 ******************************
- ** 修改人:
- ** 日 期:
- ** 描 述:
- ********************************************************************/
- namespace OptimizationTest
- {
- const int MAXNUM = 10000;
- void OptTest_ftol(float fValue)
- {
- int nValue;
- int tm = GetTickCount();
- for (int i = 0; i < MAXNUM; ++i)
- {
- for (int j = 0; j < MAXNUM; ++j)
- {
- int nValue = fValue;
- }
- }
- cout << “直接强转花费时间” << GetTickCount() - tm<< endl;
- tm = GetTickCount();
- for (int i = 0; i < MAXNUM; ++i)
- {
- for (int j = 0; j < MAXNUM; ++j)
- {
- _asm
- {
- fld fValue;
- fistp nValue;
- }
- }
- }
- cout << “汇编指令花费时间” << GetTickCount() - tm<< endl;
- }
- }
还没有评论,来说两句吧...