【发布时间】:2012-02-03 09:56:36
【问题描述】:
在 C# 中考虑这个:
int[] a = new int[1024];
所有整数都将设置为 0。传统上,这是通过高度优化的零填充操作完成的(例如 memset)。然而,由于这个数组是由 CLR 分配的,我可以想到一个非常简单的优化; CLR 可以维护一个归零的内存区域,以便在我们请求内存时跳过这个零填充。
现在,CLR 会执行这样的优化吗? (我目前使用的是 .NET 4.0)
【问题讨论】:
-
你为什么要关心?当然,除了学术兴趣。
-
我恰好是从 C++ 世界中成长起来的,那里的程序员实际上关心底层代码。 (并且......在 CPU 密集型算法中处理巨大的内存块,不必要的归零可能会成为瓶颈。知道何时发生归零是有意义的。)
-
'你为什么要关心?' - 让我想起了'Why you readin' for?'
标签: c# arrays performance initialization