Я внедрил NedMalloc в наше приложение, и я вполне доволен результатами. Разногласия, с которыми я сталкивался ранее, исчезли, и к распределителю было довольно легко подключиться, даже общая производительность была очень хорошей, вплоть до того, что накладные расходы на выделение памяти закончились, приложение теперь близко к неизмеримому.
Я не пробовал ptmalloc, так как я не нашел его готовую для Windows версию и потерял мотивацию, как только NedMalloc работал для меня нормально.
Помимо двух упомянутых, я думаю, что было бы также интересно попробовать TCMalloc - у него есть некоторые функции, которые теоретически звучат лучше, чем NedMalloc (например, очень небольшие издержки для небольших выделений по сравнению с 4 B) заголовок, используемый NedMalloc), однако, поскольку он, кажется, не имеет готового порта Windows, он также может оказаться не совсем простым.
После нескольких недель использования NedMalloc я был вынужден отказаться от него, потому что его пространство оказалось слишком высоким для нас. Особенно поразило нас то, что NedMalloc, похоже, исправляет память, которую он больше не использует для операционной системы, ненадлежащим образом, сохраняя при этом большую часть своей активности. На данный момент я заменил его на JEMalloc , который, кажется, не такой быстрый (он все еще быстрый, но не такой быстрый, как был NedMalloc), но он очень устойчив в этом отношении, и его масштабируемость также очень хорошо.
И после нескольких месяцев использования JEMalloc я перешел на TCMalloc. Потребовалось больше усилий, чтобы адаптировать его для Windows по сравнению с другими, но его результаты (как производительность, так и фрагментация) кажутся нам лучшими из того, что я тестировал до сих пор.