Individual Project 1 总结
题目: http://www.cnblogs.com/jiel/p/3978727.html
1. 估计时间:
① 遍历目录找到所有文本文件 3天
② 编写统计词频的函数 排序的函数 并输出到文件 2天
③ 实现扩展模式 3天
2. 实际时间
有些忘记了...开启优化花了好长时间...因为自己的VS2012性能分析之后不能显示函数花费时间的百分比
加上是英文版 觉得看着不舒服 于是重装了中文版的2013
① 遍历目录找到所有文本文件 13小时
② 编写统计词频的函数 排序的函数 并输出到文件 1天
③ 实现扩展模式 1天
3.关于优化
先上未优化的性能分析图


可以看见最占时间的函数是 StrEqual() (比较两个string是否相等,大小写不敏感),因为我每找到一个符合的string都会遍历vector 中的所有string并和它们进行比较
我的优化方案是:
将word存入到二叉排序树,每次找到一个符合的string去和二叉树匹配,二分查找,很大程度上提高了效率,以下分析图用例和优化前的测试用例为同一测试用例

PS:
写完程序已经是24号了,25号上午上课,下午打了一会球,晚上面试...挤出了时间终于完成了优化,复习了关于树方面的知识,好高兴!
4.TestCases
注:程序默认输入格式是正确的
①测试带有空的子文件夹的目录

结果如下:

②测试扩展模式 -e2

与期望相符
③测试扩展模式 -e3

与期望相符
④测试大小写合并

与期望相符
⑤验证文件类型
若干个文件,内容都为:
hello Hello heLLo yyy XXX xxx xxx
文件类型分别为:
txt, cpp, h, cs, png
结果:
<Hello> 12
<XXX> 12
<yyy> 4
与期望相符
⑥测试词的区分能力
inm@#ydream#@iamnots ofaraw*(()ayfr!@o mhome
结果:
<ayfr> 1
<iamnots> 1
<inm> 1
<mhome> 1
<ofaraw> 1
<ydream> 1
与期望相符
⑦测试递归扫描能力
根目录下是一个文件和一个目录,目录下是一个文件和一个目录,目录下又是一个文件。
三个文件都是txt,内容一致:
inm@#ydream#@iamnots ofaraw*(()ayfr!@o mhome
结果:
<ayfr> 3
<iamnots> 3
<inm> 3
<mhome> 3
<ofaraw> 3
<ydream> 3
与期望相符
⑧测试词的排序能力

与期望相符
⑨测试连续两词

与期望相符
⑩测试空文件夹或空文件
屏幕输出 “没有符合的word”
注:一些TestCases参照了张艺同学和黎柱金同学的Cases,特别感谢你们提供了不错的测试方案!!
5.所学
学会了用性能分析工具查看哪部分代码浪费了时间,学到了WIN32_FIND_DATA结构体,学到了关于fstream操作文件方面的知识等。
Individual Project 1 总结的更多相关文章
- Individual Project - Word frequency program-11061171-MaoYu
BUAA Advanced Software Engineering Project: Individual Project - Word frequency program Ryan Mao (毛 ...
- Note: SE Class's Individual Project
虽然第一个Project还有点小问题需要修改,但是大体已经差不多了,先把blog记在这里,算是开博第一篇吧! 1.项目预计的用时 本来看到这个题的时候想的并不多,但是看了老师的要求才觉得如此麻烦ORZ ...
- Individual Project Records
At the midnight of September 20, I finished my individual projcet -- a word frequency program. You c ...
- 《软件工程》individual project开发小记(一)
今天周四没有想去上的课,早八点到中午11点半,下午吃完饭后稍微完善了一下,目前代码可以在dev c++和vs2012上正常运行,性能分析我看资料上一大坨,考虑到目前状态不太好,脑袋转不动了,决定先放一 ...
- SoftwareEngineering Individual Project - Word frequency program
说实话前面c#实在没怎么学过.这次写起来感觉非常陌生,就连怎么引用名空间都忘记了.在经过恶补后还是慢慢地适应了. 1.项目预计用时: 构建并写出大概的数据结构,程序框架及模块: 30min 实现文件夹 ...
- Individual Project - Word frequency program
1.项目预计用时 -计划学习C#和百度一些用法的时间:5小时 -项目本身打算写两个类,一个是遍历搜索文件夹的,另外一个用来统计单词.计划用时:5小时 2.项目实际用时 学习C#以及正则表达式的用法:3 ...
- Individual Project - Word frequency program - Multi Thread And Optimization
作业说明详见:http://www.cnblogs.com/jiel/p/3978727.html 一.开始写代码前的规划: 1.尝试用C#来写,之前没有学过C#,所以打算先花1天的时间学习C# 2. ...
- 1415-2个人项目Individual Project
作业要求: 个人独立完成,实践PSP相关知识. 时 间: 两周. (本来截止4月30日,考虑到刚迁移平台,延缓至5月7日) 实践目标: Github基本源代码控制方法 利用Junit4进行程序模块的测 ...
- Project: Individual Project - Word frequency program----11061192zmx
Description & Requirements http://www.cnblogs.com/jiel/p/3311400.html 项目时间估计 理解项目要求: 1小时 构建项目逻辑: ...
- Project: Individual Project - Word frequency program-11061160顾泽鹏
一.预计用时: (1)明确要求:15min: (2)文件的遍历:1h: (3)Simple mode 词频统计:0.5h: (4)extend mode 词频统计:1h: (5)对单词词频排序输出:0 ...
随机推荐
- C#生成真值表
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 2.1Python数据处理篇之---内建有关数学的函数
目录 目录 前言 (一)数学相关得内建函数 (二)具体演示 1.求绝对值 2.创建一个复数 3.求商和余数 4.求x得y次幂 5.生成一个序列 6.四舍五入 7.对一个集合求和 8.求最大值 9.求最 ...
- 报数的golang实现
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: . . . . . 1 被读作 "one 1" ("一个一") , 即 11 ...
- jQ 移动端返回顶部代码整理
//返回顶部 $('#btn-scroll').on('touchend',function(){ var T = $(window).scrollTop(); var t = setInterval ...
- Java面试——微服务
1.什么是微服务? 就目前而言,对于微服务业界并没有一个统一的,标准的定义. 但通常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分一组小的服务,每个服务运行在其独立 ...
- python之面向对象进阶2
封装.property装饰器 封装分为3种情况:封装对象的属性.封装类的属性.封装方法. 封装对象的属性:(在属性名前加双下划线__) class Person: def __init__(self, ...
- 【洛谷】【搜索(dfs)】P3956 棋盘
题目传送门:戳 题目描述: 有一个 \(m * m\) 的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色 ...
- 使用ElasticSearch服务从MySQL同步数据实现搜索即时提示与全文搜索功能
最近用了几天时间为公司项目集成了全文搜索引擎,项目初步目标是用于搜索框的即时提示.数据需要从MySQL中同步过来,因为数据不小,因此需要考虑初次同步后进行持续的增量同步.这里用到的开源服务就是Elas ...
- Arduino IDE for ESP8266 ()esp8266项目 WIFI攻击器
https://www.wandianshenme.com/play/esp8266-nodemcu-create-portable-wifi-jammer/ 使用 ESP8266 制作 WiFi 干 ...
- django -- 推荐商品算法
协同过滤算法之基于物品的推荐算法 目前有关个性化推荐算法主要分为三大类:1.基于协同过滤的推荐:2.基于内容过滤的推荐和3.社会化推荐. 本文主要讨论基于协同过滤的推荐,而该算法也可以划分为两类: 1 ...