C/C++/Perl/汇编/Java效率比较---读后感

      今天在网上看到一篇文章,链接如下:http://blogold.chinaunix.net/u/13279/showart_134510.html

个人觉得写得不错,有血有肉的,没有太多空话,用例子说明了下C/C++/Perl/汇编/Java效率,在这给大家推荐下,

     他设计了一个简单的选题:从指定文本文件中搜索指定字符串,计 算个数。并且打印出搜索到的个数作为结果输出。作为程序员的你粗粗过一下脑子,马 上会想到这个算法里面包含了条件判断、循环、数组操作等基本的程序语言因素。这满 足了上面第一个条件。另外的,为了满足第二个条件,我准备了一个多达2G的文本文件, 总共有文本1500万行多。这保怔了足够的运行时间(但应该不会太长),而决不会一眨 眼就执行完了。最后的,我们都知道在文本串里面搜索子串的算法是数据结构课本中的一个典型的例子(考试也经常被考到的),也满足算法简单的要求。同时,为了让每 个程序的环境都一样,我得每测试一次就重新启动一次机器,避免CACHE的影响。

     由于我主要是学java的,就附上java代码部分,其余的语言的实现可以去看原文

    

      候捷先生翻译的宏篇巨著《JAVA编程思想》一书中第67页说到:"使用最原始的JAVA 解释器,JAVA大概比C慢上20到50倍"之说法我在阅读的时候就心存疑虑,心想要是这样, JAVA完全没有存或与世间的必要了。在亲自动手试验过后,我觉得说JAVA在J2EE环境下, 比C慢上2-3倍还是比较可靠的说法的。况且,目前越来越多的硬件JVM的诞生,也给JAVA 越来越多的机会。不过我担心的正是这点, JVM的多厂家多样化很可能会造成某些兼容 性方面的问题。例如我见过一篇文章就是讨论某种JAVA程序在IBM-JVM可用而在SUN-JVM 上不可用之事例。但愿的,JAVA能健康成长。

      最后原文的总结很好,让我这个菜鸟懂得了一些知识,就是 事实上,本文测试中有一个大大的不公平之处,相信仔细的读者已经发现了:其中 C和ASM都是使用缓冲区直读的办法,不管三七二十一就进行判断(最后用指针检查缓冲
区边界)。而C++等其他的语言虽然用了非常方便的流按行读出,但是多做了很多事情: 每一个字符都要判断其是不是回车换行符,而按行读近来,每次缓冲的也要少很多。因 此其他几种语言就大大的吃亏了。不过这并不影响结论性的东西,因为测试本身就说明 越方便就效率越低。事情总是要有人做,不是吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值