繁体   English   中英

在循环中访问Object属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM