Является ли управление памятью .NET быстрее в управляемом коде, чем в собственном коде?

Я бы подумал, что было бы ясно, будет ли распределение памяти быстрее в управляемом коде, чем в собственном коде - но, похоже, есть некоторые разногласия. Возможно, управление памятью в виртуальной машине происходит быстрее из-за отсутствия контекстно-обменных вызовов в ОС, но потом я вижу, что виртуальная машина сама должна будет делать периодические вызовы ОС для большей памяти, и у нее есть накладные расходы на управление самой памятью а не ОС.

Вместо того, чтобы делать необоснованные утверждения, подобные мне, предоставьте ссылки на ссылки, которые поддерживают вашу позицию.

Ответ 1

Прочитайте http://msdn.microsoft.com/en-us/library/ms973852.aspx

В нем рассказывается о том, как распределение памяти работает в .NET и кратко сравнивает его с моделью С++.

Таким образом, выделение памяти в .NET связано с захватом текущей точки стека в качестве адреса объекта и добавлением размера данных объекта в указатель стека. С++ для сравнения должен искать список свободных указателей для области кучи, достаточно большой для объекта. В большинстве случаев .NET будет быстрее.