性能分析报告点击调试->性能探查器进行性能分析
1000时跑了1.043s
1w时跑了2.544s
10w时跑了15.433s,可以发现很慢了
100w时跑了2min19s,手机都刷了一圈了
分析100w的报告
点击报告中的main函数,发现调用的createSudokuFile函数占用时间最多98.32%
继续点击createSudokuFile函数,调用的newFromModel函数占用最多98.10%
继续点击newFromModel函数,发现to_string占用最多38.27%
发现问题
由于数组保存的int,再用运算符“+”拼接字符窜string结果是要转换成string,而使用to_string函数耗费了大量时间。现在考虑保存char,即把数组model与firstR都换成char型。改进后大大提升速度提升,100W耗时变成了2min19s变为48.721s,少了1min30s;可见to_string这个库函数还是避免使用.
当然,这比起宿舍大佬的6s还差得远呢
继续查看函数调用情况,发现字符窜的平接占用了大量时间。思考是否摒弃字符窜保存终局
优化至4.646s左右
有点不敢相信,检查一下参数是100W没错的。在上面的分析报告中,我们看到字符窜的的处理速度太慢,所一我直接摒弃了字符窜,改用用字符数组保存终局,100W提升了近十倍。
小结:
走了不少弯路,最开始没仔思考,用了字符窜保存结果,还用了效率低下的库函数to_string。
接着一步步优化,摒弃的int数组、库函数to_string,有了很大提升,最终摒弃了彻底摒弃了string,代码质量得到了巨大提升