09 2012 档案
摘要:词频统计程序是一个相当简单的程序:它读一个文件夹里的所有指定类型的文件,统计其中出现的英文单词的次数,并排序输出。但是它却有很大的优化余地,甚至可以分布式到多台机器中(Map-Reduce模型)。但是,在单机中搞这么复杂反而会增加运行时间和内存。我们希望将它改造成多线程。但是,分词过程和统计过程若分布到多个线程中,则对内存的锁会增加,因为大部分算法的时间效率都是O(n)的,而且对内存的操作很频繁,所以效率反而会降低。在单机中,若为单线程运行,则IO操作(读写文件)时不能进行CPU运算,同理CPU进行运算时不能进行IO操作。所以一种很明显的优化方式就是,把IO操作和CPU操作分离到两个线程中去。
阅读全文
摘要:WordCount已写完一段时间了,但是它依然存在bug。昨天与同学的WordCount对拍,发现两者的结果不一致。经询问,我们俩对用户需求的理解完全一致。首先观察不一致的地方,同学的版本的输出文件总是比我的输出文件要小。仔细观察后发现,同学的输出中没有对空字符串(即纯数字的单词在extended模式下删除后缀数字的结果)的输出。他改掉该bug后,输出数据大小一样了,但是内容依然有不一样的地方。但是输入文件太多,不好定位到谁出错、哪里出错,于是我们开始观察对方的代码,依然未找到错误。我们于是用一个大文本文件作为输入,我们的输出不一致。通过人肉搜索词频,发现是我出错。然后发现是由于我对中文的处理
阅读全文
摘要:本博客是我应软件工程课的要求而申请的博客,用来记录个人项目。我叫王安然,北航100617班学生。对于第一个独立项目:单词统计软件,我计划使用C#完成。由于没有安装VS2012,所以首先需要安装VS2012并进行一些必要的设置,下载+安装需要大约三个小时;在配置好开发环境后,我开始编码,计划用2.5个小时完成编码任务;随后,我需要创建十个测试样例并一一进行测试,计划用1.5个小时完成;最后,通过使用VS2012内置的性能分析工具对其进行优化,计划使用1个小时。共计8小时。现在,我已完成上述任务。真实完成时间为:下载+安装时间约为2小时,编码约2.5个小时,建立测试样例并测试约1小时,优化约1小时
阅读全文