一 需求:
测试现代CPU整数乘法 VS 埃及乘法
二 测试代码:
#include <iostream>
using namespace std;
inline bool odd(int n) {
return n & 0x01;
}
inline int half(int n) {
return n >> 1;
}
inline int doubling(int n) {
return n << 1;
}
int multiply0(int n, int a) {
return n * a;
}
int multiply1(int n, int a) {
if (1 == n) {
return a;
}
int ret = multiply1(half(n), doubling(a));
if (odd(n)) {
ret += a;
}
return ret;
}
int multiply2(int n, int a) {
int ret = 0;
while (true) {
if (odd(n)) {
ret += a;
if(1 == n) {
break;
}
}
a = doubling(a);
n = half(n);
}
return ret;
}
int main() {
for (int i = 0;i < 1000000;i++) {
// multiply0(410, 519); // 0.013s
// multiply1(410, 519); // 0.069s
multiply2(410, 519); // 0.065s
}
return 0;
}

本文通过实现并测试现代CPU整数乘法与两种古埃及乘法算法,对比了它们在处理大规模乘法运算时的效率。实验结果显示,尽管古埃及乘法在数学理论上具有独特魅力,但在实际应用中,现代CPU乘法指令的速度远超古埃及乘法。
968

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



