乘法或if:什么更有效?

时间:2013-03-26 18:50:00

标签: c# performance algorithm

我有一个手的二进制图像(大小:100x100),我们可以表示为仅由0或1值组成的矩阵。这是一个例子:

Example of a binary image of a human hand

假设我有一个double数组代表线性化图像,我们称之为image,我需要执行以下操作:

double accumulator = 0;
for (int j = 0; j < image.Length; ++j)
{
    accumulator += image[j] * weights[j];
}

换句话说,我需要计算image数组的每个像素的加权和。 weights表示包含double值的数组,用于对图像的每个像素进行加权。

以下代码是否比上一代码更有效?

double accumulator = 0;
for (int j = 0; j < image.Length; ++j)
{
    if (image[j] != 0)
    {
        accumulator += image[j] * weights[j];
    }
}

1 个答案:

答案 0 :(得分:4)

答案是 - 在这个时刻你真的不需要担心这个问题。如果您的代码运行慢,那么您可以尝试一些优化。然而,“太慢”是主观的。

过早优化是所有邪恶的根源

正如angelatlarge指出的那样,目前 - 使用易于阅读且易于维护的内容。