Является ли управление памятью .NET быстрее в управляемом коде, чем в собственном коде? - PullRequest
11 голосов
/ 06 октября 2008

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

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

Ответы [ 2 ]

6 голосов
/ 06 октября 2008

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

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

Итак, выделение памяти в .NET включает в себя захват текущей точки стека в качестве адреса объекта и добавление размера данных объекта к указателю стека. C ++ для сравнения должен искать в списке освобожденных указателей область кучи, достаточно большую для объекта. Поэтому в большинстве случаев .NET будет быстрее.

1 голос
/ 06 октября 2008

Послушайте Джеффа Рихтера из Wintellect, он авторитет по этому вопросу:

http://www.dotnetrocks.com/default.aspx?showNum=361

...