程序员的修养

在做IE正方面的东西,用的是GATE框架,处理中文文本,中文处理不同于英文,因为中文最大的特点就是每个字之间没有间隔,而英文每个词之间都有间隔,GATE是谢菲尔德大学开发的开源框架,老外麽,主要处理人家的英文,因而用到中文就要首先进行分词。
不谈分词和GATE如何处理文本,谈一下经过GATE处理完后的文本的处理,由于是分割过的文本,因而有必要进行把分割后的文本进行合并,也就是去掉空格。
不能简单进行替换,因为会把文本开始的两个空格删除,这样看的很不舒服。因而到文本中进行全文的查找,找到一个空格就去点一个空格,ok 万事大吉。可是运行的程序多了,发现处理的越来越慢,把程序down掉,重新运行,速度就跟上来了。开始没怎么在意,以为是机子的问题呢,后来老大过来看成果,运行一下,半天没出结果。老大说这种速度是不行的,需要改良程序,打开任务管理器,发现分析一个几百k的文本,程序会耗掉20M的内存,JVM 来不及回收。老大给我说了一句很有道理的话:程序员要有程序员的修养。“周星驰说演员要有演员的修养,程序员也要有程序员的修养。”
程序员不应该写这样烂程序,要对自己负责。查找一下原因,原来在用StringBuilder 去除空格的时候,JAVA的处理是再复制一个原先的文本(去掉那个空格的文本),一篇文档中有数千个空格,那么这个文档要被复制数千遍,JVM 只能回收少部分,因而耗费内存过大。是因为调用的系统函数处理的原因,如何该进呢?
一个大卡车转弯是很难的,但小型车可以来个漂移转个弯,相当的easy 。用到程序中也一样,把文档分成若干小部分,一次处理一小部分的文档,那么ok ,复制也只是复制一小部分,这样JVM可以来得及回收,耗费的内存大大减小。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值