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
Внутренняя ошибка: ../ztc/gdag.c 776
Очевидно, В unittest есть ошибки, но в то же время он стал важной частью моего проекта. Я хотел бы знать, нормальное ли замедление или это что-то, над чем работают? Мой проект растет, и с каждым новым модульным тестом компиляция занимает все больше и больше времени. Единственное известное мне решение - отключить -release
и -inline
, но это не всегда желательно.