0

我需要关于我的第一个 D 项目的建议。我已将其上传到:-

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

IDEA:对 3 种运行时算法进行基准测试,并将它们与它们的编译时变体进行比较。它们之间的唯一区别是,对于编译时,查找表(即数组 bmBc、bmGs 和后缀)必须在编译时计算(我目前依赖 CTFE)。而对于运行时,查找表是在运行时计算的。

注意:模式匹配算法本身不需要在编译时执行,只需要查找表。话虽如此,在已知(编译时计算)表上运行的算法必须比必须在运行时计算它们的算法更快.

我的结果似乎有所不同,只有第一对(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

我会很感激你的建议。

谢谢你的建议。

4

1 回答 1

1

任何不激活编译器优化的性能测试都是没有用的。你应该添加dmd -release -inline -O -boundscheck=off. 性能测试通常也使用循环来重复计算。否则你可能会得到不正确的结果。

于 2015-08-17T15:17:33.470 回答