数独项目--项目改进:

在运用输入输出I/O函数中,最开始是运用的fprintf进行写入,称为程序1.0版本,在进行性能诊断的时候,我发现在生成1000000个数独终局过程竟然总共耗费了5分钟!而用VS诊断中,光fprintf函数就耗费了99.9%的时间,所以我决定加以改进。

表一 输出字符串100万次的时间(单位:us)

测试序号

fprintf

fputs

1

645202

428150

2

645396

427962

3

644726

427396

4

645811

424421

5

639071

422962

 

对比不难发现,对于不需要替换变量的输出字符(串),使用fprintf速度还是慢了不少的。

 

而后的过程中,我用fputc对字符一个一个加入,大大缩短了时间的消耗。进一步的把生成1000000数独终局时间缩短到了20s,但是,再次运用性能诊断工具进行测试时发现,大部分的时间还是耗费在了打印的基础上, 也就是说明,打开访问文件指针的时间是非常长的,如果减少其访问次数,可以加以改进。

而后我决定,先把字符串进行储存,将一个数独终局的所有字符存在一个数组中,最后一次性用fputs进行文件输入,这样可以又一次减少时间损耗。

 

posted @ 2018-04-12 22:25  Prisonerr  阅读(105)  评论(0编辑  收藏  举报