Консультируйте по вопросам сравнительных тестов, используемых для тестирования средства выделения C++ и C? Сравнительные тесты, удовлетворяющие любой из следующих аспектов, рассматривают:
Спасибо!
Если вы спросите об общем распределителе для программы C / C ++, то я нашел эту статью Hoard: масштабируемый распределитель памяти для многопоточных приложений , в которой рассматривается этот вопрос. Это цитата из этого документа
Пока еще нет стандартного набора тестов для оценки многопоточных распределителей. Нам неизвестны тесты, которые специально подчеркивали бы многопоточную производительность серверных приложений, таких как веб-серверы 1 и менеджеры баз данных. Мы выбрали тесты , описанные в других документах и опубликованные иным образом (тест Larson от Larson and Krishnan [22] и тест shbench от {{1}) } MicroQuill, Inc. [26]), два многопоточных приложения, которые включают тесты производительности (BEMengine [7] и barnes-hut [1, 2]), а также написали несколько собственные микротесты для выявления различных аспектов выделения памяти производительности (threadtest, active-false, passive-false).
Эта статья вроде как старая. Однако недавно я видел распределитель для HP-UX ( MallocNextGen ), и HP также не может гарантировать, что он подходит для всех возможных приложений. В нем говорится:
Как правило, ожидается, что новый распределитель повысит производительность приложений. Однако могут быть некоторые приложения, для которых производительность может снизиться. Поэтому пользователям рекомендуется протестировать свои приложения с распределителем памяти по умолчанию в libc и с распределителем в libmallocng перед использованием нового распределитель в производственной среде .
Что касается скорости и параллелизма, мой собственный опыт показывает, что вам нужно измерить производительность вашей собственной программы, чтобы сравнить два разных распределителя. Если мы говорим о Linux, вы можете использовать LD_PRELOAD для загрузки различных распределителей.
Вы можете загрузить nedmalloc
и попытаться сравнить с ним свой распределитель. У него есть тест под названием test.c
с исходным кодом, который вы можете переписать в соответствии с вашим распределителем.
Несколько лет назад я сам тестировал несколько аллокаторов, и мой опыт показывает, что результаты зависят от типа теста. Если вы хотите написать несколько тестов самостоятельно, рассмотрите следующие ситуации:
Вы заметите, что результаты будут разными для каждого теста. Аллокаторы, которые очень хороши в одной ситуации, могут быть плохими в других ситуациях.
На практике это означает, что лучше всего протестировать его в вашем приложении, в реальной ситуации.