Будет ли сборка мусора C быстрее, чем C ++? - PullRequest
6 голосов
/ 08 февраля 2009

Я довольно долго размышлял о том, как управлять памятью в моем следующем проекте. Который пишет DSL на C / C ++.

Это можно сделать любым из трех способов.

  1. Ссылка считается C или C ++.
  2. Мусор собрал C.
  3. В C ++ копирование классов и структур из стека в стек и управление строками отдельно с помощью некоторого GC.

Сообщество, вероятно, уже имеет большой опыт по каждому из этих методов. Какой из них будет быстрее? Каковы плюсы и минусы для каждого?

Смежный побочный вопрос. Будет ли malloc / free медленнее, чем выделять большой кусок в начале программы и запускать поверх него собственный менеджер памяти? .NET, кажется, делает это. Но меня смущает, почему мы не можем рассчитывать на то, что ОС сделает эту работу лучше и быстрее, чем мы можем сделать сами.

Ответы [ 11 ]

0 голосов
/ 08 февраля 2009

Ни C, ни C ++ не предоставят вам мусор бесплатно. Они предоставят вам библиотеки выделения памяти (которые предоставляют malloc / free и т. Д.). Существует множество онлайн-ресурсов по алгоритмам написания библиотек для сборки мусора. Хорошее начало - текст ссылки

...