數獨項目--項目改進:
阿新 • • 發佈:2018-04-13
進行 輸出 字符串 borde putc 輸出字符串 fputs 說明 數獨
fprintf速度還是慢了不少的。
在運用輸入輸出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 |
對比不難發現,對於不需要替換變量的輸出字符(串),使用
而後的過程中,我用fputc對字符一個一個加入,大大縮短了時間的消耗。進一步的把生成1000000數獨終局時間縮短到了20s,但是,再次運用性能診斷工具進行測試時發現,大部分的時間還是耗費在了打印的基礎上, 也就是說明,打開訪問文件指針的時間是非常長的,如果減少其訪問次數,可以加以改進。
而後我決定,先把字符串進行儲存,將一個數獨終局的所有字符存在一個數組中,最後一次性用fputs進行文件輸入,這樣可以又一次減少時間損耗。
數獨項目--項目改進: