2、更新:补充SSE3新增的FPU取整指令fisttp的说明)(2007.06.04更新:一些修正、补充double取整、补充FPU的RC场说明)正文: 为了便于讨论,这里代码使用C++,涉及到汇编优化的时候假定为x86平台;使用的编译器为vc2005; 测试使用的CPU为AMD64x24200+,测试时使用的单线程执行; 为了代码的可读性,没有加入异常处理代码;A:需要优化的原始代码(使用了大量的浮点数到整数的转换)#include #include #include volatile long t
3、estResult; //使用一个全局域的volatile变量以避免编译器把需要测试的代码优化掉const long testDataCount=10000000;const long testCount=20;float fSrc[testDataCount];#define asm __asmvoid ftol_test_0(){ long tmp=0; for (long i = 0; i < testDataCount; ++i) tmp +=(long)fSrc[i]; //需要优化
4、的浮点数取整 testResult=tmp;}int main(){ //inti for (long i=0;i>1))*rand()*(1.0/RAND_MAX)); //test double start0=(double)clock(); for (long c=0;c