3

首先将对象属性分配给变量而不是直接在循环中使用它会更好吗?

假设我有一个位图Bitmap img = new Bitmap("image.jpg"),我需要遍历所有像素以进行一些处理。对于大约 200 万像素的 1080p 图像。我data.Stride首先使用或将它们分配给变量有关系int dataStride = data.Stride吗?我每次都需要访问它来计算偏移量,但 dataStride 是图像的常量。

data = editImage.LockBits(new Rectangle(0, 0, editWidth, editHeight), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
byte* dataPtr = (byte*)data.Scan0;
dataStride = data.Stride;

我首先将它们分配给一个变量,因为我认为它必须首先访问对象(每次),然后从对象(每次)访问更慢的整数。而且由于它是一个大循环......它加起来。因此,首先将属性分配给变量会更快,因为它可以直接访问 int 值。它是否正确?

4

1 回答 1

2

是的。不管属性多么简单,访问它仍然有函数调用的开销。变量更快,尤其是当您执行 200 万次时。

于 2012-05-02T00:54:43.093 回答