• 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操作文件方面的知识等。

  • 相关阅读:
    Leetcode 647 回文子串
    计算机专业课程——答案搜集
    Centos搭建go环境以及go入门
    android studio实现圆角的button
    关于区块链的认识和看法
    LeetCode 96. 不同的二叉搜索树
    LeetCode 120. Triangle (三角形最小路径和)详解
    LeetCode 64最小路径和
    微信发起摄像头接口请求 上传头像 图片
    Vue解决项目白屏以及(反向代理)
  • 原文地址:https://www.cnblogs.com/Squeen/p/3988353.html
Copyright © 2020-2023  润新知