2015-08-17 10 views
0

Мне нужен совет по моему первому D-проекту. Я загрузил его на: -Сравнение соответствия шаблону: поиск Compiletime vs Runtime в D

https://bitbucket.org/mrjohns/matcher/downloads

IDEA: Бенчмаркинг 3 алгоритмов выполнения и сравнивая их с их вариантами компиляции. Единственное различие между ними заключается в том, что для компиляции time-ones таблицы вычислений (т. Е. Массивы bmBc, bmGs и суффиксы) должны вычисляться во время компиляции (в настоящее время я полагаюсь на CTFE). В то время как для исполняемых файлов таблицы поиска вычисляются во время выполнения.

NB: сами алгоритмы сопоставления шаблонов не должны выполняться во время компиляции, а только таблицы поиска. Указав это, алгоритмы, которые выполняются на известных (вычисляемых по времени) таблицах, должны быть быстрее, чем те, которые должны вычислить их во время выполнения.

Мои результаты, похоже, показывают что-то другое, только первая пара ( BM_Runtime и BM_Compile-time) дает допустимые результаты, две другие пары дают более высокое время выполнения для вариантов времени компиляции. Я думаю, что здесь что-то не хватает. Пожалуйста помоги.

Текущие результаты для шаблона = "GCAGAGAG", как показано ниже: -

**BM_Runtime**   = 366 hnsecs  position= 513 

**BM_Compile-time**  = 294 hnsecs  position =513 

**BMH_Runtime**   = 174 hnsecs  position= 513 

**BMH_Compile-time** = 261 hnsecs  position= 513 

**AG_Run-time**   = 258 hnsecs position= 513 

**AG_Compile-time**  = 268 hnsecs position= 513 

Выполнение кода: DMD -J. matcher.d inputs.d rtime_pre.d ctime_pre.d & & numactl --physcpubind = 0 ./matcher

Буду признателен за ваши предложения.

Спасибо вам за это.

+0

Любой тест производительности без активации оптимизации компилятора не является полезным. – sibnick

+0

@sibnick, спасибо. Но я никогда не делал этого раньше. Как это можно сделать? – Walker

+0

Обратите внимание, что DMD не создает очень эффективный код даже при оптимизации. LDC и GDC используют llvm и GCC-серверы соответственно, которые имеют гораздо больше работы в своих оптимизаторах. –

ответ

1

Любой тест производительности без активации оптимизации компилятора не является полезным. Вы должны добавить dmd -release -inline -O -boundscheck=off. Также, как правило, тесты производительности используют циклы для повторения вычислений. В противном случае вы можете получить неправильные результаты.

+0

Я пробовал это: 'dmd -J. -release -O -inline -noboundscheck matcher.d inputs.d rtime_pre.d ctime_pre.d && numactl --physcpubind = 0./matcher' положить '-noboundscheck = off' does not work – Walker

+0

dmd version? Я использую 2.0.68 – sibnick

+0

Моя версия dmd - 2.066.1 – Walker

 Смежные вопросы

  • Нет связанных вопросов^_^