D - один из самых быстрых языков программирования для компиляции, если не самый быстрый, но это не всегда так. Когда unittest
включается, все становится очень медленным. Мой текущий проект имеет 6-7 модулей (~ 2000 LOC), причем каждый из них имеет unittests, который также содержит контрольные показатели. Вот некоторые цифры из моего текущего проекта:
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 является ошибкой, но в то же время он стал важной частью моего проекта. Я хотел бы знать, нормальное ли замедление или это то, над чем работали? Мой проект растет, и с каждым новым unittest компиляция занимает больше времени и дольше. Единственное решение, которое я знаю, - отключить -release
и -inline
, но это не всегда желательно.