首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模式匹配基准测试:编译时查找与D中的运行时查找

模式匹配基准测试:编译时查找与D中的运行时查找
EN

Stack Overflow用户
提问于 2015-08-17 14:51:21
回答 1查看 103关注 0票数 0

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

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

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

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

我的结果似乎显示了一些不同的东西,只有第一对( BM_Runtime和BM_compile)产生可接受的结果,另外两对为编译时变体提供了更高的执行时间。我想我漏掉了什么东西。请帮帮忙。

pattern="GCAGAGAG“目前的结果如下:

代码语言:javascript
复制
**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。rtime_pre.d ctime_pre.d && numactl --physcpubind=0 ./matcher

我很感谢你的建议。

在这里感谢你。

EN

回答 1

Stack Overflow用户

发布于 2015-08-17 15:17:33

在不激活编译器优化的情况下,任何性能测试都是无用的。您应该添加dmd -release -inline -O -boundscheck=off。此外,通常性能测试使用循环重复计算。否则你可能会得到不正确的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32053493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档