Для so_5_extra мы использовали Catch/Catch2 в качестве фреймворка для unit-тестирования. Catch2, конечно же, отличная штука. Но вот время компиляции самих unit-тестов -- это ахилесова пята. Особенно в таком проекте, как so_5_extra, который сам весь на шаблонах, да еще и часть компонентов оттуда базируются на Asio, которая вся из шаблонов.
В общем, с ростом количества тестов для so_5_extra, увеличение времени компиляции меня задолбало настолько, что в версии 1.1 попробовал использовать конкурирующий инструмент, doctest. Гораздо менее раскрученный и известный. Но зато более шустрый.
Вот результаты сегодняшних замеров. Полная сборка so_5_extra-1.1 под Windows с VC++15.6 на реальном железе:
- Catch2: 37m 55s;
- doctest: 26m 30s.
Но еще круче разница выглядит под виртуалкой, которую я кручу на этой же Windows-машине. ArchLinux с GCC 7.3:
- Catch2: 1h 21m 17s;
- doctest: 36m 25s.
В общем, явно с Catch2 в проекте so_5_extra мы попрощаемся. Может быть Catch2 обладает большей функциональностью, но нам и doctest-а более чем хватает. А времени doctest экономит сильно больше.
PS. В so_5_extra-1.1 будет сделан переход на asio-1.12.0. Плюс, наверное, будет добавлен еще один диспетчер (autoscaling_thread_pool, автоматически увеличивает и уменьшает количество нитей в пуле в зависимости от загрузки). Если кто-то хочет видеть что-то еще, то дайте знать.
Комментариев нет:
Отправить комментарий