D - один из самых быстрых языков программирования для компиляции, если не самый быстрый, но это не всегда так. Вещи становятся мучительно медленными, когда unittest
включен. Мой текущий проект состоит из 6-7 модулей (~ 2000 LOC), каждый из которых имеет юнит-тесты, которые также содержат тесты. Вот некоторые цифры из моего текущего проекта:
dmd -O -noboundscheck
занимает 0m1.287s
dmd -O -release -noboundscheck
занимает 0m1.382s
dmd -O -inline -noboundscheck
занимает 0m1.499s
dmd -O -inline -release -noboundscheck
занимает 0m3.477s
добавление -unittest
к любому из вышеперечисленных значительно увеличит время компиляции:
dmd -O -inline -release -noboundscheck -unittest
занимает 0m21.918s
и иногда он вылетает DMD:
time dmd -O t1.d -inline -noboundscheck -version=Double -unittest
занимает 0m2.297s
Internal error: ../ztc/gdag.c 776
Очевидно, что unittest содержит ошибки, но в то же время он стал важной частью моего проекта. Я хотел бы знать, является ли замедление нормальным или это что-то над чем работает? Мой проект растет, и с каждым новым юнит-тестом сборка занимает все больше и больше времени. Единственное известное мне решение - отключить -release
и -inline
, но это не всегда желательно.