wordcountpro

github项目地址:https://github.com/handsomesnail/WordCountPro

PSP2.1 PSP阶段 预估耗时(小时) 实际耗时(小时)
 Planning 计划0.5 0.5 
 Estimate 估计任务需要多少时间0.5 0.5 
 Development 开发1.5 
 Analysis 需求分析0.5 0.5 
 Design Spec 生成设计文档0.5 
 Design Review 设计复审0.50.5
 Coding Standard 代码规范0.5 0.5
 Design 具体设计 0.50.5
Coding 具体编码11
 Code Review 代码复审0.50.5
 Test 测试 21.5
 Reporting 报告 0.50.5 
 Test Report 测试报告10.5 
 Size Measurement 计算工作量 0.50.5 
 Postmortem 总结0.5 0.5 
 

 合计

 11.59.5

基本任务:排序后将词频输出到文件

代码贡献

//输出结果到result.txt
void Output() {
 vector<pair<string, int>> tempVector(wordMap.begin(), wordMap.end());//哈希表转存到动态数组
 sort(tempVector.begin(), tempVector.end(), Compare);//根据value和key排序

 ofstream outfs("result.txt");
 if (outfs.is_open()) {
  for (int i = 0; i < tempVector.size(); i++) {
   if (i >= 100)
    break;

   outfs << tempVector[i].first + " " << tempVector[i].second;
   //cout << tempVector[i].first + " " << tempVector[i].second << endl;
   if (i != 99 && i != tempVector.size() - 1)
    outfs << endl;
  }
 }
 outfs.close();

}

//传入排序的比较方法
bool Compare(pair<string, int> p1, pair<string, int> p2) {
 if (p1.second != p2.second)
  return p1.second > p2.second;
 else return p1.first < p2.first;
}

测试用例

IDItemTitleCriticalityConditioninputOutputResultStatusRemark
4_1output正常输出测试1HwordMapresult.txtresult.txt通过黑盒
4_2output异常输出测试2HwordMapresult.txtresult.txt通过黑盒
4_3compare排序比对测试3HP1,P2falsefalse通过白盒
4_4compare排序比对测试4HP1,P2falsefalse通过白盒
4_5compare排序比对测试5HP1,P2falsefalse通过白盒
4_6compare排序比对测试1HP1,P2truefalse通过白盒
4_7compare排序比对测试2HP1,P2truefalse通过白盒

质量评测:设计的测试用例均通过了测试,且测试用例运行时间短,效率符合要求。测试用例覆盖了可能出现的输入情况,并覆盖了该模块的所有分支,单元测试结果符合预期。

 

 小组贡献:经过小组内部讨论,贡献率约开发规范

扩展任务

开发规范:选用了Google的《C++风格指南》中的规范:“果函数超过 40 行, 可以思索一下能不能在不影响程序结构的前提下对其进行分割。”在编写函数时要考虑到函数体的长度,如果该函数要实现复杂的功能,可能会造成函数过长,这样会使得代码难以阅读。

代码分析:根据规范分析组员中学号为17071的提交代码符合规范要求,符合开发规范。

代码静态扫描

  • 扫描结果显示源文件WordCountPro.cpp的117行处的指针chRtn释放内存不匹配导致内存泄漏, chRtn为字符数组, 应当使用delete[] chRtn;释放其内存,替换原代码中的delete chRtn;

高级任务

压力测试:

小组成员认为统计大文件可以有效测试性能,使用较大的文件对源程序进行压力测试,对程序的主要性能指标(即处理时长,以毫秒计算)进行测试和记录(debug测试框架下)。

同行评审

组内所有成员展开同行评审,经过讨论,认为制约程序性能的因素主要在核心模块对单词存储的数据结构以及排序算法上。
在核心模块中主要因素为当前选择的set和map容器,其内部数据结构为红黑树不够高效,次要因素则是是频繁调用的函数应当设为内联函数。

性能优化:

小组成员将记录分隔符表以及单词表的set和map容器替换为unordered_map和unordered_set,内部为哈希表。并将有关函数改为内联函数。

转载于:https://www.cnblogs.com/zhaoshidaye/p/8744746.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值