Почему компиляция D занимает так много времени?

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 , но это не всегда желательно.

10
задан Peter Alexander 26 December 2011 в 17:54
поделиться