16个版本 (10个稳定版)
3.1.1 | 2019年7月14日 |
---|---|
3.0.1 | 2019年1月16日 |
2.0.1 | 2018年10月29日 |
1.0.7 | 2018年10月16日 |
0.0.5 | 2016年5月29日 |
#4 in #leaf-node
每月44次下载
25KB
169 代码行
crates.io/chess/ 和 crates.io/shakmaty/ 的 Perft 测试基准
此简单程序测试了 'chess' 包和 'shakmaty' 包的性能。由于它似乎不再维护(并且我最近无法编译它),已删除 'chess-move-gen' 包。
运行
要运行程序,您必须指定一个有效的 FEN 字符串(表示棋局位置)和搜索深度。
程序将报告从该位置开始找到的叶节点数量以及搜索所需的时间(忽略设置时间,目前这部分时间较长)。
您还可以使用 -a [大小] 选项在每次深度缓存结果,从而加快 perft 性能。
您还可以使用 -m 选项使用 MoveGen 结构,这是一个迭代器,用于测试其功能。(这在大多数情况下是生成棋步的最快方式,对于 'chess' 包。)
您还可以指定 -c 选项使用 'chess' 包,-s 选项使用 'shakmaty' 包,或 -g 用于 'chesss-move-gen' 包。注意:此应用程序支持的所有功能并不都在 'shakmaty' 包中,因此对于所有命令行参数,我默认调用其 'perft' 函数。
性能
以下是我使用命令 'RUSTFLAGS="-C target-cpu=native" cargo bench | python graph_benches.py' 比较了 chess 和 shakmaty 的性能数据(数值越低越好)。
如果在 crates.io 上查看,您可以在 https://github.com/jordanbray/chess_perft 上查看性能数据。
示例
[jordan@razer chess_perft]$ ./target/release/chess_perft -f "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1" -d 6 -m # Test the KiwiPete Position
chess : Perft 6 of r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1 Result: 8031647685 Time: 22s 492ms
依赖关系
~1.5MB
~25K SLoC