Visual Studio自带一个性能分析器,可以给出调用关系和时间。
并行粒度越大,享受到的加速效果越好,你可以考虑让4个线程独自渲染最后平均。
在我6核的i5-9400上使用5个线程(6线程因为抢占时间反而更慢?)在轮盘赌概论0.7的时候达到1024*1024*2000SPP的折算时间是20多分钟的样子。
遍历BHV树调用极多,如果你在其中使用了std::max(min)的话,考虑手工改写成分支(甚至改写成位运算消除分支<我并没有尝试>)也可以改进一些效率,考虑在字节点保存父节点指针来避免递归调用(我同样没有尝试)应该还可以进一步提速。
如果你对提升效率感兴趣的话,不妨试试这些建议。