在正常的C#使用中,平时没有关注过new byte[]之类的耗时问题。近期在做一个跟耗时相关的项目时,才发现申请内存也是耗时的,代码如下:
for(int i=0;i<1000;i++)
{
Stopwatch st = new Stopwatch();
st.Start();
byte[] imagePre = new byte[2048 * 2048 * 2];
byte[] imageDarkNoise = new byte[2048 * 2048 * 2];
Utility.LogControl.Info(st.ElapsedMilliseconds.ToString());
//Thread.Sleep(300);
}
Utility.LogControl.UI("Complete");
测试发现:
1)每次循环等待300ms,1000次平均耗时0.55ms
2)连续循环,不等待,1000次平均耗时1.5ms
因此,如果连续的操作内存,这种耗时还是要考虑的。
另外stopwatch这个类用于统计时间比较精确,可以到us级。建议要扣ms左右的耗时统计时,使用这个
本文通过实验展示了在C#中连续操作大量内存时的耗时情况,揭示了new byte[]等内存分配操作的实际开销,并推荐使用Stopwatch进行高精度耗时统计。

被折叠的 条评论
为什么被折叠?



