老大曹艳白的技术聊天

性能对比

右侧为C#实现的并行计算,左侧为Java实现的并行计算。

在两者均无特别优化的情况下,C#的性能是Java的8倍。造成这一现象的原因并不是Java语言本身性能低下,而是两者的默认参数区别。
C#基本没有留给开发者可调整的参数,操作系统默认的参数在80%以上的情况下是最优的。
而Java为了能实现跨平台,不得不采取最保守的默认参数,以使几乎所有平台都能运行,Java把参数调整的权力留给了开发者。JVM可调整参数有数十个,而CLR几乎就没有可调整的参数。如果仔细调整JVM的数十个参数,性能必然能达到甚至超越C#的实现。不过,几十个参数就像几十个维度,组合有千万种,如何调整这些参数的难度需要足够的经验支撑,而这些经验来自于非Java语言本身,大量涉及操作系统。比如堆与栈的内存分配比例,C#不可调,Java可调(且默认值是性能很差的,不适合于高性能计算类的需求)。甚至Java还可调整JVM的垃圾回收算法的内部细节。

从Java\C#\Php三个语言全部学完的感觉来说。Php的学习难度最低,可以打3分。C#的学习难度居中,可以打5分。Java的学习难度最高,可以打10分。Php与C#基本只要学会如何使用手册中提供的示例,基本就能写出性能不错的程序,而Java还需要后续的经验才能保证达到较高的性能。Php与C#两个语言的设计团队,最求的目标是使开发越来越简单,所以封装了大量底层实现细节,只留给开发人员最简单的调用接口。而Java的设计团队是把权力留给开发人员,所以开放了几乎所有底层细节。所以也不奇怪,为什么现在高端的Java程序员待遇极高,因为大量需要人的经验来保证系统的较高性能。

通过三个语言均学习较为深入得出的语言特性分析,算是比较客观了。语言没有好坏,只有不同的特点与试用环境。接受一门新的语言,就接受了一种新的思维方式。对事物的理解也更加深刻。希望大家都能接触更多其他语言的知识,尽早实现我们多语言融合的目标。

测试IIS+C#、TOMCAT+Java、Apache+Php最简单的空页面性能(基于Windows部署)。

IIS+C#和TOMCAT+Java性能比较接近,在4500RPS左右。Apache+Php性能最差,在3500RPS左右。IIS+C#和Apache+Php的组合在估计范围内。IIS从8.0以后(微软的架构调整,IIS8.0的体量很轻了)的性能不输Nginx。Apache过于沉重,不进行特殊调校,很难提升效率,Apache+Php换成Nginx+Php,可能三种组合的性能都非常接近。当然,因为Web服务器,语言均不相同,所以测试结果没有实际意义。尤其后两者有大量参数可以配置(均采用默认配置)且可以部署在Linux上,所以操作系统可能也是影响因素之一。
曹艳白caoyanbai@139.com 16:14:23

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,253评论 19 139
  • 转自陈明乾的博客,可能有一定更新。 转原文声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、...
    C86guli阅读 4,747评论 6 72
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,481评论 25 709
  • 绿黄枯 夏秋冬 拍到树的变化 总会有诸多感触 分享给你们 大家晚安
    哦野性阅读 313评论 1 2
  • 情绪化是我自来都想要控制的,至今为止,都还是控制的不是很好,虽然今天情绪化严重,好的点在于妈妈打了个电话过来,问候...
    东方小豆子阅读 245评论 1 1