1. 项目预计的用时

其实刚开始以为这个项目不难写,因为上学期oo课程上用java写过类似的程序(貌似还比这个复杂)。觉得主要的难点在于学习c++语言。

总的项目被分为大概3个部分。

其一,文件遍历。由于刚开始学习c++ 所以计划用时较长,2-3小时

其二,字频统计。整个程序的kernel,是程序正确性和效率的关键点,需要认真写。计划3.5小时+。Ps(学习正则表达式,+1小时)

其三,排序输出。程序的结尾,也是最简单的阶段。1小时。

最后,就是整个程序的调试,修正bug,提高算法效率等。时间不定。

2. 项目实际用时

总的来说,总的时间和估计时间差不多。但是,由于时间不是连续的,所以很难统计。

还是错误估计了c++入门所需要的时间。比如找到文件的遍历所用的库就很麻烦,看api学习语法也花费了很长时间。这一部分占据了项目时间的5成以上。

做完程序,感觉程序的难点(花费时间最多的)是学习而不是编程。程序看似很复杂,其实用正则表达式思路就很清晰,代码量也很小。编程的难度(逻辑的复杂度)也不大。

In conclusion9小时整块时间(但是有时候吃吃零食,发发呆把这些加上大概13小时——这是病,得治求推荐好的医院!!)

3. 项目的表现和性能的分析

这个部分要感谢天神和张大神,他们给了我很多启发,也使我对自己的程序有了一丢丢的自信。。。(错了就不给分的设置真坑爹,不得不吐槽,完全不合理啊,最起码也要按测试点给分啊。谁的程序一点bug都没有,满满的不满 = =)。

咳咳,吐槽好像多了点,回到正题。第一次用vs,对各种功能不熟悉,看到分析真心觉得高大上啊。可惜就是看不太懂,努力学习。

第一次测试的test文档很短,就不断出现

第一次吓死我了,还以为程序错了,喝一口水冷静下。

经过询问同学and 分析,可能cpu执行时间太短,来不及分析数据。后来,分析了 2014年6月英语六级真题及答案(高大上有木有)

得到结果1:

 

结果2

 

两张图对一个数据分析,差别有点大啊。不仅是cpu时间,而且占用百分比也不一样。不知道为什么。能不能找到一个合理的函数来在一定程度上量化呢。。。?这里需要好好思考下

附上其他测试图

函数调用过程

 

函数独占样本

 

最后,感觉自己的程序提高空间还很大,可惜没有时间了。希望下次赶紧治好拖延症。(绝对不会因为自己耽误小组作业。。。我发四)

 

程序改进的想法(来不及实现):

1.普通模式,e2,e3其实很多代码是重复的我,完全可以规约成一个函数,这里严重拖慢了效率。

2.输出排序是用了选择排序,原因是一直没有搞懂c++的sort机智,排序老出错,没办法只能写一个简单的,所以这里也浪费了很多的时间。明天去问问丁大神。

3.Map容器不好根据key值分析,所以申请了list来保存,这里浪费了很多的空间,如果有更好的方法,这里的可提高空间很大。

4.其他细节,如变量的使用,有的申请了但没有用。

 

 

4. 项目的测试样例

1.测试代码对单词的识别能力

输入:a aa aaa aa1 1aa 1aaa aaa1aaa abb%*&^^*&^)(ss a **_)(*_(*(__*sasas

输出:<aaa>:1

<aaa1aaa>:1

<abb>:1

<sasas>:1

Correct

2.测试代码合并大小写的功能

输入:apple apple2 Apple APPLE app APP ios ioS

输出:<APPLE>:3

<APP>:2

<ioS>:2

<apple2>:1

Correct

3.测试排序能力

输入:apple  appl apple a1pple aPP

输出

<apple>:2

<aPP>:1

<appl>:1

Correct

4.测试6级真题

输入:

输出:

没有办法确定自己的正误,但是按照自己的想法,基本应该没错。

5.测试多层目录

测试了自己的工程文件

输出:

目测正确。

6.测试六级英语的2-word 和3-word

2-word 结果如下

3-word

 

测试到这里,真想说:妈妈再也不用担心我的英语了(哈哈 没吃药。。)

7.空目录

正确

5. 收获和体会

发现其实语言是相通的,在学校应该更多的关注于基础理论和实践能力,不要想着java现在很火,我去学java。过两天又去学swift。语言都是大同小异的,有了好的计算机基础能力,学习语言是很快的。编程的重点不是语言,而是怎么驾驭语言。是思想,或者说是组织语言的能力。

多与大家交流是很能促进进步的。刚开始自己再看语法和api文档,找了很久都摸不着头脑,然后没办法,去问大神。在和大神交流的过程中学习是很快的,大神也给我介绍了map容器。大大降低了编程复杂度。闻道有先后,别人身上总有值得学习的东西,交流是很好的学习平台。

工具的重要性。以前写代码都在vc 6.0的平台上。Vc 6.0 bug多,而且ui设计的很不好,功能也少。第一次用vs就有很大的收获。比如词法分析,自动补全,提示等等。磨刀不误砍柴工,好的工具确实能够事半功倍。

优化的重要性。以前总觉得代码写完就好,自己很少注意优化,尤其是细节方面的优化。但有时候,改动一下,代码的时间效率就会发生很大的变化。尤其是对循环内部的改动,效果也是惊人的。

 

写完了,睡觉 呼呼呼~~~~

最新文章

  1. Portable Basemap Server:多数据源多客户端的底图服务器
  2. 【BZOJ-4522】密钥破解 数论 + 模拟 ( Pollard_Rho分解 + Exgcd求逆元 + 快速幂 + 快速乘)
  3. for循环、for循环嵌套
  4. java 对象序列化 RMI
  5. ubuntu14.04 + cocos2d-x-2.2.6 + eclipse发布android + Qt Creator4
  6. 基于 koajs 的前后端分离实践
  7. cocos2D(九)---- CCAction
  8. 最简单也最难——如何获取到Android控件的高度
  9. Unity 5 Game Optimization
  10. 【Netty】EventLoop和线程模型
  11. cocos web 多端口运行
  12. Python编码问题小结
  13. AMBA总线协议AHB、APB、AXI对比分析【转】
  14. 3里氏代换原则LSP
  15. 启动oracle command
  16. Sql Ado.net 学习笔记之连接字符串
  17. 获取div,表单中的内容
  18. php多路复用(多线程)socket相关应用
  19. HTML 标签大全及属性
  20. PowerDesigner表生成 EXCEL

热门文章

  1. layui框架学习记录
  2. 手机上的m3u8视频(缓存)怎么转成MP4?
  3. [java大数据面试] 2018年4月百度面试经过+三面算法题:给定一个数组,求和为定值的所有组合.
  4. Unity3D中自带事件函数的执行顺序
  5. Android ActionBar全然解析,使用官方推荐的最佳导航栏(上)
  6. python3 day01 大纲
  7. oracle 定期迁移分区表数据(不落地)
  8. 【转】对random_state参数的理解
  9. sed插入,替换指定行的特定字符串,删除指定行首的#
  10. Python基础(5)——函数