关于软件工程个人作业 Word frequency program 的总结

一、预计花在程序各部分的时间:

(1)对所给命令行参数的判断和处理,看它是否合法、是哪种模式。预计用时20min;

(2)关于目录操作:遍历给定目录下的所有文件,包括子目录和非目录文件。预计用时40min;

(3)对符合格式的文本文件进行读操作,用正则表达式匹配单词,用哈希表存储单词的词频,包括两种模式。 由于这里的“单词”不是传统中的单词,所以有较多细节要处理。

        简单模式预计用时2h,扩展模式只要在简单模式的基础上稍加修改,预计用时1h;

(4)词频排序输出,预计用时1h;

(5)对程序的测试与优化,预计用时2h

 预计花费总时间:7h

二、实际开发完善所用时间

(1)命令行参数判断与处理:约15min;

(2)递归遍历目录下的文件和文件夹:约50min;

(3)词频统计方面,先简单学习了基本正则表达式和哈希表的用法,并且后来把简单模式和扩展模式合并在一个函数中实现。期间遇到了很多很多小问题花费了较多时间。

        实际用时大约5h;

(4)由于不仅要求按词频降序排列,词频相同者还要按基于ascll码的字典序排列,故花费了不少时间,约1.5h;

(5)顺利实现要求的功能后,着手进行代码的整合与优化,用时约1h;

        进行测试与性能分析,约用时2h

(6)进行程序的容错性处理,约用时30min

实际用时总计约 11h

三、程序性能分析

  由于第一次接触到VS2012的程序分析工具,不太熟悉,花了些时间。用性能分析工具运行程序时,可能是因为要统计个函数执行时间、CPU占用率等指标,程序运行时间明显比单纯运行程序所用时间长,所以花的时间较多。

  这里用一个198k的英文文本文件进行性能分析

  performance analysis graph如图:

    

   各函数占用比例如下图:

  

  

  函数调用样图:

  

 

四、所用测试用例

  

(1)所给路径为空文件夹

(2)所给路径不为空文件夹,但该文件夹下含有空的子文件夹

(3)所给路径下含有.txt 或 .cpp 或 .cs 或 .h 格式的空文件

(4)所给路径下内容完全一样的文件,看能否正确统计

(5)给定路径下含有大规模文本文件

(6)含有以数字开头字符串的文件

(7)含有各种非数字字母字符的文件,如*,、/~!……^等

(8)扩展模式下,含有以不同数字为后缀字符串的文件

(9)含有各种不同格式文件测试

(10)针对字典序的测试,如同时含有Mother1 ,abc1;同时含有windows2000,Windows1

五、收获

  这次作业,我花了很多时间精力去完成。在开始做之前,我以为它很简单,可实际上去实现时,发现并不是所想的那么容易,因为有很多的细节需要处理,处理不好就会一直卡在那,或者性能非常弱。通过这次作业,学会了c#文件操作、正则表达式等等很多的东西。更重要的是,结识了vs2012的性能分析工具,发现它对我们来说是个非常有用的工具,如果能好好利用,相信将对我们的编程优化有很大的帮助!

posted @ 2013-09-18 09:56  March On  阅读(118)  评论(0编辑  收藏  举报
top last
Welcome user from
(since 2020.6.1)