Есть ли хороший тест для C ++ оптимизирующих компиляторов? - PullRequest
6 голосов
/ 12 сентября 2011

Я оцениваю оптимизирующий компилятор Visual C ++ 10 на тривиальных примерах кода, поэтому посмотрите, насколько хорош машинный код, и пока у меня нет творческих возможностей.

Существует ли пример кода, который обычно используется для оценки того, насколько хорош оптимизирующий компилятор C ++?

Ответы [ 4 ]

3 голосов
/ 12 сентября 2011

Единственный действительный тест - это тест, имитирующий тип кода, который вы разрабатываете. Оптимизаторы по-разному реагируют на разные приложения и разные стили кодирования, и на самом деле учитывается только тот код, который вы собираетесь компилировать с помощью компилятора.

2 голосов
/ 12 сентября 2011

Попробуйте протестировать такие библиотеки как Eigen (http://eigen.tuxfamily.org/index.php?title=Main_Page).

1 голос
/ 12 сентября 2011

Как уже было сказано, вам действительно нужно измерить оптимизацию в контексте типичных сценариев использования для ваших собственных приложений, в типичных целевых средах.По этой причине я включил таймеры в свой собственный набор автоматизированной регрессии и обнаружил некоторые довольно необычные результаты, которые описаны в предыдущем вопросе FWIW. Я считаю, что VS2010 SP1 в среднем создает код примерно на 8% быстрее, чемVS2008 на моем собственном приложении, около 13% с оптимизацией всей программы.Это не распределяется равномерно по случаям использования.Я также склонен видеть значительные различия между длинными тестами, которые не видны при профилировании гораздо меньших тестовых случаев.Я еще не проводил сравнения платформ, например, многие выигрыши в зависимости от платформы или аппаратного обеспечения.

Я бы предположил, что многие оптимизаторы будут настроены так, чтобы давать наилучшие результаты по сравнению с хорошо известными наборами тестов, что может означать, в свою очередь,что это не лучшие куски кода, по которым можно проверить преимущества оптимизации.(Умозрение конечно)

1 голос
/ 12 сентября 2011

Довольно много тестов используют scimark: http://math.nist.gov/scimark2/download_c.html однако, вы должны быть избирательны в том, что вы тестируете (тестирование изолированно), так как некоторые тесты могут потерпеть неудачу из-за плохой развертки цикла, но остальная часть кода была превосходной, но что-то еще делает лучше только причина разворачивания цикла (т. е. остальная часть его сгенерированного кода была подпарам)

...