乘以许多数字,但停在零

时间:2014-01-08 14:21:04

标签: optimization multiplication

假设有一个函数prod(x),它返回一系列数字x的乘积。

如果x中的操作数可以任意大,那么当遇到零时,如何通过停止乘法来减少计算x乘积的时间?这是成熟的编译器和口译员已经做过的事情吗?

如果一个人正在编写自己的prod(x)函数,那么最好的方法是什么?做if 0 in x then return(0) else multiply(x)之类的事情是否有意义?

例如,如果x = 1,0,3,4,...,-4,9,则不需要继续乘以第二个词,对吗?

3 个答案:

答案 0 :(得分:2)

任何0乘法都会返回0,所以你要检查一个序列中是否有0并且只返回0.

答案 1 :(得分:1)

通常:编译器优化主要在给定的源代码上完成。您正在谈论运行时数据的优化,编译器(通常)不会这样做。这意味着您必须自己编写这些优化。

在这种情况下:当有0时,你确实可以停止。

答案 2 :(得分:1)

由于乘法运算通勤,您可以按任何顺序评估这些术语。如果你有一个排序的数字序列,你可以简单地看看第一项是否为零。