Медленная компиляция набора модульных тестов на основе повышения

Я использую библиотеку boost.test для написания модульных тестов для своего приложения.

Проблема в том, что когда один конкретный файл *.cpp, содержащий набор тестов, увеличивается до определенного размера, компиляция этого файла становится очень медленной.

Я использую макрос BOOST_AUTO_TEST_CASE для определения тестовых случаев.

Буст версия 1.34.1

Сборка env — это autotools + gcc 4.3 под Fedora 9.

Буду очень признателен, если кто-нибудь укажет на возможные причины такого поведения.


person cppalex    schedule 24.04.2009    source источник
comment
Вы используете исходный код или готовую библиотеку?   -  person dirkgently    schedule 24.04.2009
comment
По какому фактору он становится медленнее и как внезапно? Это добавить еще один тестовый пример, и все это будет в 10 раз медленнее, или больше похоже на то, что в определенный момент дополнительное время на тестовый пример начинает расти?   -  person Steve Jessop    schedule 24.04.2009
comment
››Используете ли вы исходный код или готовую библиотеку? Я использую библиотеку предварительной сборки. Есть ли разница? ››На сколько медленнее и как внезапно? В какой-то момент это просто начинает занимать около 3-5 минут вместо 5 секунд, добавление дополнительных тестов не меняет время существенно.   -  person cppalex    schedule 24.04.2009


Ответы (3)


У вас может закончиться физическая память, и система начнет использовать своп (файл/раздел) намного интенсивнее, чем обычно (пробуксовка).

person grivei    schedule 24.04.2009
comment
Ну, он использует больше памяти, чем обычно. Но это скорее следствие, а не причина. Вопрос в том, почему он использует так много памяти? - person cppalex; 24.04.2009

Один из способов попытаться выяснить, что происходит, - использовать параметр gcc -Q и посмотреть, в чем разница между нормальным и чрезвычайно медленным случаем.

person Laurynas Biveinis    schedule 24.04.2009

Вы можете разделить один и тот же набор тестов на несколько тестовых файлов. Это должно облегчить ваши проблемы.

person Gennadiy Rozental    schedule 17.03.2011