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