#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "VTimetest.h"
int TIMES = 9999;
int main(int argc, char* argv[])
{
int j;
scanf( "%d", &j );
Timetest t;
t.StartTime();
for ( int i = 1; i < TIMES; ++i )
{
j = j / i;
}
t.StopTime();
return 0;
}
=========================================================
测试环境:ARM-Linux
横向比较:无符号数的除法效率比有符号数高,差不多高15%左右。而乘法、加减法操作则一致。
纵向比较:除法的效率较低(因为处理器没有除法指令,要由库函数完成),加减效率最高,乘法稍低,比例大概是:3~3.5:1:1.1。
有符号数和无符号数混和运算时,+-*一律转换为有符号数再进行运算,而/则转换为无符号数再进行运算(VC编译器的结果,GCC也是如此)。
本文通过一个简单的C程序,在ARM-Linux环境下测试了整数运算的效率。实验发现无符号数的除法比有符号数的除法效率高出约15%,而加减乘法操作在有符号和无符号数之间的效率基本相同。
1万+

被折叠的 条评论
为什么被折叠?



