您的位置:首页 > 其它

软件工程——数独 最终Release版本性能测试结果

2020-01-18 16:45 113 查看

测试环境

  • Windows10 64bit
  • Intel VTune Profile
  • AMD 2700x

sudoku.exe -c 1000000

生成1e6的数据量运行状况如下。

总用时

 

 最耗时函数

 

 

void copySudoku(const Sudoku& src, char* dst)
{
int k = 0;
for (int i = 1; i < N_ROW_SUDOKU; i++)
{
for (int j = 1; j < N_ROW_SUDOKU; j++)
{
dst[k++] = src[i][j] + '0';
dst[k++] = ' ';
}
dst[k - 1] = '\n';//行末无空格
}
dst[k++] = '\n';
p_start_buff += k;
return;
}
if (is_end)
{
if (h_sudoku_txt)
{
WriteFile(
h_sudoku_txt,
SudokuPrinter::buff,
SudokuPrinter::num_sudoku_in_buff * SudokuPrinter::num_bytes_of_sudoku - 2,//最后两个换行不写入,即最后一个数独后面没有空行
&written,
NULL
);
closeTxt();
}
}
else
{
if (h_sudoku_txt)
WriteFile(h_sudoku_txt,
SudokuPrinter::buff,
SudokuPrinter::num_sudoku_in_buff * SudokuPrinter::num_bytes_of_sudoku,
&written,
NULL
);
}

有效CPU利用率直方图

从下图可以看出生成数独环节CPU占用率并不高。

 

 软件详细信息

程序占用内存仅为2MB

 

 

 

sudoku.exe -s problem.txt

求解1e6的数独,每个数独至少30个空,分析如下:

运行时间

 

 

最耗时函数

solveSudoku是求解数独的核心函数,也是占用时间最多的。

 

 

 

CPU利用率

从下图可以看出CPU利用率并不是很高。

 

 

软件详细信息

可以看出软件占用内存非常小,仅有4MB

 

 

 

总结

综合看来,数独生成和求解算法还是相当高效的。其中读取和写入并没有占据太多程序时间。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: