为什么乘法比加法还快啊 cpu

下面的代码在我的计算机运行花费了738MS,当将(i*j)该成(i+j)却花了1100MS。计算中乘法不换成加法再运算的么。为什么反而快了呢?,不解啊 int nKeyvalue; int t1 = GetTickCount(); int n; for (int j=1; j<11; j++) { for (int i=0; i<100000000; i++) { n = (i*j)+n; } } int t2 = GetTickCount(); int t3 = t2-t1; CString strTips; strTips.Format("%d-%d", t3, n); AfxMessageBox(strTips); return;
2026年09月25日 09:29
有1个网友回答
网友(1):

首先,自从 80486 开始,CPU 就有了专用的 乘法器/移位器 运算单元,
因此计算乘法并非是在 CPU 内作多次加法!

这就好比笔算十进制 12*23,列竖式的话
. 12
* 23
----
. 36
.24
----
.276

是拆成 12*3=36 和 12*2=24 ,然后将24移位,再相加,得276
这比连加23次12要快得多。

今天的 SSE2/SSE3 FPU 可以让 CPU 在1个时钟周期内计算乘法,
(事实上往往能同时完成两条乘法),但是FPU是做浮点乘法的,
整型乘法还得使用基本的整型乘法器/移位器或 MMX乘法器。

至于楼主发现整型乘法比整型加法还快,可能是编译器自动调用
4个MMX乘法器并行计算乘法,再累加到n上面,
这样虽然整型乘法慢于整型加法,但是4路并行就反而快一些了。