在循环中访问Object属性

时间:2012-05-02 00:49:30

标签: c# object properties

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

假设我有一个位图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值。这是对的吗?

1 个答案:

答案 0 :(得分:2)

是。无论属性多么简单,访问它仍然会产生函数调用的开销。变量更快,特别是如果你做了200万次。