Я проделал довольно много работы над этим и описал некоторые из них здесь . Я тестировал Boehm GC на C ++, выделяя с помощью, malloc
но не освобождая, выделяя и освобождая с помощью free
GC, созданного на заказ, написанного на C ++, и все по сравнению со стандартным GC OCaml, на котором работает решатель n-queens на основе списка. GC OCaml был быстрее во всех случаях. Программы на C ++ и OCaml были специально написаны для выполнения одинакового распределения в одном и том же порядке.
Конечно, вы можете переписать программы для решения проблемы, используя только 64-битные целые числа и без выделения. Хотя это было бы быстрее, это побило бы смысл упражнения (которое должно было предсказать производительность нового алгоритма GC, над которым я работал, используя прототип, построенный на C ++).
Я провел много лет в отрасли, портируя реальный код C ++ на управляемые языки. Почти в каждом отдельном случае я наблюдал существенные улучшения производительности, многие из которых, вероятно, были связаны с тем, что GC затормозил ручное управление памятью. Практическое ограничение заключается не в том, что может быть достигнуто в микробенчмарке, а в том, что может быть достигнуто до истечения крайнего срока, и языки на основе GC предлагают такие огромные улучшения производительности, что я никогда не оглядывался назад. Я все еще использую C и C ++ на встроенных устройствах (микроконтроллерах), но даже сейчас это меняется.