В сборку мусора или не сборку мусора

Недавно я увидел два действительно хороших и познавательных языковых разговора:

Этот первый Херб Саттер представляет все прекрасные и интересные особенности C ++ 0x, почему будущее C ++ кажется более светлым, чем когда-либо, и как M $ считается хорошим парнем в этой игре. Речь идет об эффективности и о том, как минимизация активности кучи очень часто улучшает производительность.

Этот другой , написанный Андреем Александреску, мотивирует переход с C / C ++ к его новому устройству, изменившему правила игры D . Большая часть работы D кажется действительно хорошо мотивированной и продуманной. Однако меня удивила одна вещь, а именно то, что D подталкивает к сборке мусора и что все классы создаются исключительно по ссылке . Еще больше сбивает с толку книга The D Programming Language Ref Manual , в частности, в разделе о Resource Management , говорится следующее, цитата:

Сборка мусора устраняет утомительное, подверженное ошибкам распределение памяти код отслеживания необходим для языков C и C ++. Это не только означает гораздо более быстрое время разработки и более низкие затраты на обслуживание, но и результирующая программа часто выполняется быстрее !

Это противоречит постоянным заявлениям Саттера о минимизации активности кучи.Я очень уважаю идеи Саттера и Александреску, поэтому я немного смущен этими двумя ключевыми вопросами

  1. Разве создание экземпляров класса исключительно по ссылке не приводит к большому количеству ненужных операций с кучей?

  2. В каких случаях мы можем использовать Сборка мусора без ущерба для производительности во время выполнения?

70
задан Nordlöw 29 September 2011 в 22:10
поделиться