纠结了这么多天,终于能写点字出来了,我是有多不会写东西啊。。。

一、工程开始之前

  没有着手开始码代码之前,我一直都很怀疑自己能不能在规定时间内把工程完成。在仔细思考过整个工程的实现方法后,我大致预计的使用时间为:

  ①一个主类,仅包含一个Main方法,处理和输出结果;(半小时)

  ②一个fileoperate类,顾名思义,用作文件处理,包括findallfiles方法--用队列查找出目录文件夹下的所有文件;和findwords方法--处理每个文件里的词频统计;以及output--输出结果;(主要工作,四小时——五小时)

  ③一个word类,每个词是一个word对象。(半小时)

  算上一定的debug时间,预计总共耗时会在七小时左右。

 

二、工程完成之后的时间统计

  完成之后感觉实际耗时应该比原计划少一些,主要时间当然还是花在了fileoperate类上,查找相关方法,比如说GetFiles和GetDirectory之类的。不过感觉C#还是相对比较容易上手的,有这么多可以直接调用的方法。这一部分大概用时三个半小时。

  其他部分的工作用时与预计没有太大差距。

  最省时间的是程序没有出现太大问题,所以大大减少了debug时间。

 

三、性能

  因为暂时没有装上vs2012,就不贴那个性能分析图了。

  在查找目录下所有文件的算法中,用了一个队列,个人感觉应该不会是影响性能的主要原因。。

  词频统计,用的是Split分词,目测有遗漏某些分隔符,毕竟没有状态机或者正则表达式可能做到的那么完善,但是效率应该还是能介于前两者之间的。

  至于word类,在新的需求更改以后借鉴了一下同学的方法,endword用来记录出现的单词的最小形式。

 

四、十组测试数据

  正好前几天下了一个547本英文原版名著的txt集合,就分别弄成了十组测试数据,出来的结果还是比较让人满意的,只是效率确实不高。

 

五、收获

  C#真的比较容易上手,即使原来没用过C#的人写这样一个程序也不是太困难的事,C#自带的很多方法可以帮coder解决不少问题。

  正则表达式和自动机是不错的东西,貌似应该是等价的,但是不懂为什么自动机比正则的效率高很多。

posted on 2012-09-28 09:43  邓嘉  阅读(256)  评论(0编辑  收藏  举报