lab
//以下结果皆为运行1000次平均数
//变量类型测试
净运行时长:1140 / 1000000 s
int 100*100*1000 次:19900 / 1000000 s
register int 100*100*1000 次:4869 / 100000 s
long long 100*100*1000 次:26117 / 1000000 s
register long long 100*100*1000 次:25999 / 1000000 s //变化不大,推测是没有存的下long long的寄存器
short 100*100*1000 次:19953 / 1000000 s
register short 100*100*1000 次:4467 / 1000000 s
char 100*100*100*10 次:11695 / 1000000 s
register char 100*100*100*10 次:5716 / 1000000 s
float 100*100*1000 次:34497 / 1000000 s
register float 100*100*1000 次:15214 / 1000000 s
double 100*100*1000 次:34587 / 1000000 s
register double 100*100*1000 次:15266 / 1000000 s
long double 100*100*1000 次:44038 / 1000000 s
register long double 100*100*1000 次:16606 / 1000000 s
//常数测试(以rand为支撑,均为int未开register情况,故净运行时间较长)
//我们可以设或运算常数为1
//四舍五入取整
净运行时长:222565 / 1000000 s
| 100*100*1000 次:231196-222565~~ 8631 / 1000000 s -> 1
& 100*100*1000 次:230421-222565~~ 7856 / 1000000 s -> 1
^ 100*100*1000 次:230339-222565~~ 7774 / 1000000 s -> 1
+ 100*100*1000 次:230210-222565~~ 7645 / 1000000 s -> 1
- 100*100*1000 次:229336-222565~~ 6771 / 1000000 s -> 1
* 100*100*1000 次:228650-222565~~ 6085 / 1000000 s -> 1
/ 100*100*1000 次:251363-222565~~ 28798 / 1000000 s -> 3 to 4
% 100*100*1000 次:252069-222565~~ 29544 / 1000000 s -> 3 to 5
//函数调用
//int型函数
//函数大小
1 line(max):
int 100*100*100 次:34646-23684 ~ ~ 10962 / 1000000 s
__attribute__((always_inline)) 100*100*100 次:33032-23684 ~ ~ 9348 / 1000000 s
3 line(a^=b,b^=a,a^b):
int 100*100*100 次:26910-23868 ~ ~ 3042 / 1000000 s
__attribute__((always_inline)) 100*100*100 次:25955-23868 ~ ~ 2087 / 1000000 s
5 line:
int work(int &a,int &b)
{
a+=b;
b+=a;
a+=b;
a-=b;
b-=a;
return 0;
}
int 100*100*100 次:31038-23648 ~ ~ 7390 / 1000000 s
__attribute__((always_inline)) 100*100*100 次:28577-23648 ~ ~ 4929 / 1000000 s
//传参个数
1 num:
int work(int &k)
{
return k;
}
int 100*100*100 次:13750-12666 ~ ~ 1084 / 1000000 s
__attribute__((always_inline)) 100*100*100 次:12986-12666 ~ ~ 320 / 1000000 s
3 num:
int work(int &a,int &b,int &c)
{
return a;
}
int 100*100*100 次:36482-34758 ~ ~ 1724 / 1000000 s
__attribute__((always_inline)) 100*100*100 次:34989-34758 ~ ~ 231 / 1000000 s
5 num:
int work(int &a,int &b,int &c,int &d,int &f)
{
return a;
}
int 100*100*100 次:59107-56833 ~ ~ 2274 / 1000000 s
__attribute__((always_inline)) 100*100*100 次:57352-56833 ~ ~ 519 / 1000000 s
//算法常数(经运行时长因测试算法而异,统一为被减数)
-----
swap() 100*100*1000 次:305561-222565~~ 83036 / 1000000 s -> 9 to 10
a^=b,b^=a,a^=b 100*100*1000 次:243165-222565~~ 20600 / 1000000 s -> 2 to 3
-----
//数组大小为100,左右端点确定采用rand和^交换
//均赋值为0
memset() 100*100*100 次:46571-35350 ~ ~ 11221 / 1000000 s
for 100*100*100 次:61073-35350 ~ ~ 25723 / 1000000 s
-----