个人project总结感悟——by Tao

软件工程课的第一次程序作业时个人project,是一个统计词频的程序。犹豫我的编程功底不算好(数学专业学生),所以在之前的work estimation上我估计大部分时间要花在学习C#上,实际也是这样,花了靠近一天熟悉了C#,然后就开始设计程序。

最初的想法是通过树来存储单词,每扫描到一个单词,通过树来查找是否已经存在,然后更新节点的数值,后来有发现System.Collection.Generic中的Dictionary内部是按哈希表存储的,感觉既然有现成的Dictionary 且查找速度应该会比较快,所以就用Dictionary来存单词。程序的另一个需要解决的问题是将文本的内容分解成一个个单词,C#中有现成的类函数string.split( ), 乍一想用这个函数会很方便,但实践中才发现,首先要把所有分割符号考虑进去是有一大串的,并且由于所有的txt测试文本有300多M,如果每一行都用string.split( ), 将会非常消耗时间,实验也表明string.split( )的确不是一个好的选择,所以为了消除主要时间上的矛盾,我自己编了分割单词的函数,效果还比较好。运行程序的时间在30秒左右,为了提高效率,因为观察到时间在判断单词是否存在上和添加元素上,我又试验了几种其他的方法,甚至用到了catch exception的方法,发现反而变的更慢,我想毕竟用了Dictionary和它的成员函数,就很难在提高效率了,除非自己手动的去编写hash,于是就没有继续试验下去。

这次个人project的难度不算大,但是让我学到了很多。比如要是没有一个明确的任务要做,我也没法那么高效的学习C#。还有就是在编写程序之前要头脑中要有一个明确的架构,这样写代码即快错误也少。

最后我实际用的时间是1) 背景知识的学习 1天

                                   2) 程序的架构 1h

                                   3) 写代码 1.5h

                                   4) 调试改进 2h

posted @ 2012-09-07 22:49  Msra-Ustc-灰太狼  阅读(876)  评论(0编辑  收藏  举报