Ответ 1
Один из способов - использовать параметр командной строки -profile
. После запуска программы он создаст файл trace.log, где вы можете найти время выполнения для каждой функции. Это, конечно, замедлит вашу программу, поскольку компилятор будет вставлять код подсчета времени в каждую вашу функцию. Этот метод используется для определения относительной скорости функций, для определения того, что вы должны оптимизировать для повышения скорости приложения с минимальными усилиями.
Вторым вариантом является использование std.datetime. StopWatch. См. Пример в ссылке.
Или даже лучше подходит для прямого использования std.datetime. benchmark.
Не забывайте:
- Когда бенчмаркинг использует эти флаги компилятора dmd для достижения максимальной оптимизации
-release -O -inline -noboundscheck
. - Никогда не тестируйте сборки отладки.
- Удостоверьтесь, что вы не вызываете какой-либо код библиотеки внутри контрольных функций. Вы бы сравнивали производительность библиотеки, а не свой собственный код.
Кроме того, вы можете использовать LDC или GDC. Оба они обеспечивают лучшую оптимизацию/скорость запуска приложения, чем DMD.