[英]Accessing Object properties in a loop
将对象属性首先分配给变量而不是直接在循环中使用它是否更好?
假设我有一个位Bitmap img = new Bitmap("image.jpg")
位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值。 这个对吗?
是。 无论属性多么简单,访问它仍然会产生函数调用的开销。 变量更快,特别是如果你做了200万次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.