设a,b为n位数的两个整数。 我想知道a的平方的计算时间是否短于a * b。
感谢您的帮助。
答案 0 :(得分:1)
我认为没有办法在不使用x86上的IMUL的情况下对A进行平方。我错了。
要了解需要多长时间,请使用microbenchmark!
编辑:哦等等,我知道了! a b需要两次内存读取,而 a需要一次内存读取!所以a * a更快: - )。
真正的答案:除非你有一些影响事物的外在因素,否则没有理由a * b会变慢。
答案 1 :(得分:1)
我认为你的问题是:
*设a,b为n个数字的两个整数。我想知道计算a的平方的计算时间是否比计算a * b的计算时间短。*
如果n足够大,你不能只使用单个乘法指令,那么我所知道的任何算法都可以利用两个因子都相同的事实。这对于你在学校学到的算法来说是正确的,因为几乎一半的数字产品都不需要成倍增加。对于非常大的n的极端,使用FFT的卷积,两个因子的FFT对于平方是相同的,并且仅需要计算一次。
答案 2 :(得分:0)
看看the benchmarks in Bentley's "Programming Pearls",你可以从那里开始测量。