于网格的阻挡,任意角度移动,实数坐标
红蓝绿三组寻路,亮的路径是平滑(缩短)后的。
(640米)²地图:
近距离(空间距离7米,路径长度18.8米):粗糙寻路0.011ms;平滑寻路0.038ms
对角寻路(空间距离690米,路径长度772米):粗糙寻路0.071ms;平滑寻路0.653ms
20200525更新
通过重写地图预处理及其他内存优化,性能又提高了一倍
近距离(空间距离7米,路径长度18.8→18.1米):
粗糙寻路0.011ms→0.004ms;平滑寻路0.038ms→0.013ms
对角长距离寻路(空间距离690米,路径长度772米→768米):
粗糙寻路0.071ms→0.023ms;平滑寻路0.653ms→0.204ms
20200527更新,通过大过滤标志位剪枝。 0.023ms→0.008ms;0.004ms→0.002ms
recast相同测试
单位 us微秒(百万分之一秒)
方案 | 我的寻路(前三次) | Recast(前三次) |
---|---|---|
远距离 粗糙解(大致可用路径) | 28;6;6(大致可用路径) | 156;141;141(几乎不可用) |
远距离 一次优化合计 | 55;40;40(效果约等于最终解) | |
远距离 最终解 | 185;179;178 | 166;149;150 |
近距离 粗糙解 | 4;2;2(大致可用路径) | 4;3;3(几乎不可用) |
近距离 一次优化合计 | 7;4;4(约等于最终解) | |
近距离 最终解合计 | 11;11;10 | 5;4;4 |
同时recast的寻路结果更长,甚至出现绕路
2020-6-14更新:
统计性能时,考虑了cpu cache的影响,清除了cache(recast的测试没有清除cache所以性能比较平稳)。实际使用时,运行时间应当是折中的,即不是完全miss,也不是完全cached。所以看起来统计数据比以前差了,实际上没有变。
另外第一次优化贪心思路最快完成,性能提高到2倍,损失了一点点质量(而且已经比recast好了)。
单位 us微秒(百万分之一秒)
方案 | 我的寻路(前三次) | Recast(前三次) |
---|---|---|
远距离 粗糙解 | 27;5;4 (大致可用路径) | ?;156;141;141 (不可用数据) |
远距离 一次优化合计 | 44;24;24 (效果约等于最终解,可直接使用) | ?;166;149;150 |
远距离 二次优化合计 | 160;147;146 (进一步优化质量) | |
近距离 粗糙解 | 9;2;1 (大致可用路径) | ?;4;3;3 (不可用数据) |
近距离 一次优化合计 | 5;2;1 (约等于最终解,可直接使用) | ?;5;4;4 |
近距离 二次优化合计 | 10;8;8 (进一步优化质量) |