Является ли управление памятью .NET быстрее в управляемом коде, чем в собственном коде?
Я бы подумал, что было бы ясно, будет ли распределение памяти быстрее в управляемом коде, чем в собственном коде - но, похоже, есть некоторые разногласия. Возможно, управление памятью в виртуальной машине происходит быстрее из-за отсутствия контекстно-обменных вызовов в ОС, но потом я вижу, что виртуальная машина сама должна будет делать периодические вызовы ОС для большей памяти, и у нее есть накладные расходы на управление самой памятью а не ОС.
Вместо того, чтобы делать необоснованные утверждения, подобные мне, предоставьте ссылки на ссылки, которые поддерживают вашу позицию.
Ответы
Ответ 1
Прочитайте http://msdn.microsoft.com/en-us/library/ms973852.aspx
В нем рассказывается о том, как распределение памяти работает в .NET и кратко сравнивает его с моделью С++.
Таким образом, выделение памяти в .NET связано с захватом текущей точки стека в качестве адреса объекта и добавлением размера данных объекта в указатель стека. С++ для сравнения должен искать список свободных указателей для области кучи, достаточно большой для объекта. В большинстве случаев .NET будет быстрее.
Ответ 2
Слушайте Джеффа Рихтера из Wintellect, он авторитет по этому вопросу:
http://www.dotnetrocks.com/default.aspx?showNum=361