在循环中访问对象属性

本文关键字:对象 属性 访问 循环 | 更新日期: 2023-09-27 18:32:47

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

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

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

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

在循环中访问对象属性

是的。 无论属性多么简单,访问它仍然具有函数调用的开销。 变量更快,特别是当你做某事 200 万次时。