在 某篇题解 中的卡常技巧中提到了 “实数除法比整数除法要快” 这个说法,于是蒟蒻就在 ubuntu 上做了一个小小的测试:
执行 2.5×109 次 值域在 [1,5×104] 上的四则运算,分别比较 int
,double
,long long
以及 long double
的执行速度。
先放结果吧:
For plus:
int spends: 6.5652 s
double spends: 6.4664 s
long long spends: 6.4689 s
long double spends: 12.7354 s
For minus:
int spends: 6.5520 s
double spends: 6.3574 s
long long spends: 6.5223 s
long double spends: 11.7999 s
For multi:
int spends: 6.3909 s
double spends: 6.2795 s
long long spends: 6.3943 s
long double spends: 11.0459 s
For divide:
int spends: 11.8721 s
double spends: 11.6847 s
long long spends: 28.0127 s
long double spends: 15.2132 s
源代码在 这里
按理来讲实数运算应该比整数慢吧,请问各路大佬原理是什么