V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
cc959798
V2EX  ›  问与答

PHP 为什么比 Java 这种语言要慢

  •  
  •   cc959798 · 2018-12-05 13:56:26 +08:00 · 3271 次点击
    这是一个创建于 2180 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有经验的大佬分别说说

    22 条回复    2018-12-06 10:41:39 +08:00
    DamonLin
        1
    DamonLin  
       2018-12-05 14:07:01 +08:00
    你指的是什么慢?
    allenhu
        2
    allenhu  
       2018-12-05 14:17:46 +08:00   ❤️ 1
    你有这个发帖的时间都搜出几十条结果了,不是实在看不下去,我都懒得回复
    cc959798
        3
    cc959798  
    OP
       2018-12-05 14:27:03 +08:00
    @DamonLin 计算性能
    cc959798
        4
    cc959798  
    OP
       2018-12-05 14:27:43 +08:00
    @allenhu 可你还是回复啦,你可以不回复我的
    U2Fsd
        5
    U2Fsd  
       2018-12-05 14:54:59 +08:00   ❤️ 3
    U2Fsd
        6
    U2Fsd  
       2018-12-05 14:56:18 +08:00
    C++ vs. Python vs. PHP vs. Java vs. Others performance benchmark (2016 Q3)


    https://blog.famzah.net/2016/09/10/cpp-vs-python-vs-php-vs-java-vs-others-performance-benchmark-2016-q3/
    KasuganoSoras
        7
    KasuganoSoras  
       2018-12-05 15:35:01 +08:00
    PHP 是脚本解释语言,和 Java 当然没法比性能,二者用途也不完全相同,PHP 更偏向于写 Web 类的东西
    460881773
        8
    460881773  
       2018-12-05 17:10:16 +08:00
    因为 java 是编译语言啊 运行需要先编译成计算机能直接识别的语言。php 为解释型语言 运行的时候计算机需要理解这个语言是什么意思然后再执行 ,一个是直接执行一个是理解后再执行肯能效率不一样啊
    yixiang
        9
    yixiang  
       2018-12-05 17:16:02 +08:00
    你图里的 PHP 7 不是比 Java 还要快么。手动捂脸。
    yixiang
        10
    yixiang  
       2018-12-05 17:16:21 +08:00
    @yixiang 看错,以为图是楼主发的。
    shansing
        11
    shansing  
       2018-12-05 17:31:00 +08:00
    @460881773 Java 是编译成字节码文件,之后用 Java 虚拟机执行,不是计算机能“直接”识别的语言。PHP 到要执行的时候也是编译再运行的。早期 PHP 的编译很快,因为不需要做优化,后来的版本可能不同了。( PHP 也可以借助 Opcache 缓存字节码文件。)
    isCyan
        12
    isCyan  
       2018-12-05 17:41:22 +08:00   ❤️ 1
    从来不觉得 PHP 慢,也没觉得 Java 快
    lychnis
        13
    lychnis  
       2018-12-05 20:05:27 +08:00 via Android
    鱼和熊掌不可兼得 开发效率运行效率选一个
    t6attack
        14
    t6attack  
       2018-12-05 20:28:42 +08:00 via Android
    如果遇到 php7 性能触顶,说明你的项目成功了,或者你们公司做的是大生意。偷着乐去吧 。
    netherlanddennis
        15
    netherlanddennis  
       2018-12-05 20:31:06 +08:00
    finian
        16
    finian  
       2018-12-05 20:53:55 +08:00
    @460881773 #8 你要说运行,Java 和 PHP 一样,都是解释运行的。性能差异体现在虚拟机(解释器)实现上。
    sagaxu
        17
    sagaxu  
       2018-12-05 21:00:30 +08:00 via Android
    @yixiang 他那个 JAVA 代码,用的是泛型数组,Array<ListInteger>开销大,所以比较慢,换成 int[]就跟 c++差不多了
    FakeLeung
        18
    FakeLeung  
       2018-12-05 21:11:26 +08:00 via Android
    yuhhai
        19
    yuhhai  
       2018-12-06 09:53:26 +08:00 via Android
    @460881773 话说 Java 编译的字节码跟二进制执行到底慢在哪里了
    zzzzzzZ
        20
    zzzzzzZ  
       2018-12-06 10:09:44 +08:00
    Java 是预编译成字节码之后,在 JVM 中运行,然后 JVM 去操作设备。由于 JVM 的优化和 JIT 技术的出现,使编译这一块的性能无限接近于编译型语言,但是 Java 不是编译型语言。
    同样 JVM 的优秀诞生了很多基于 JVM 的不同语言,知名的如支持函数式编程的 Kotlin 和 Scala
    Java 只编译一遍,之后 JVM 跑的都是编译后的字节码,和 PHP5 跑一次编译一次性能差别太大,脚本语言都有这个毛病,PHP 已经努力解决了(Zend)。PHP7 为什么能够大幅度提升性能,重点就在 JIT 和 OPcache。

    但是双方真正的差异不是编译方式,语言升级换代之后编译终归会被压缩到一个极致效率。PHP 和 Java 最大的不同在于,PHP 是动态语言,Java 是静态语言,或者说强类型语言。
    [ ]
    Java 开发牺牲了大量时间保证自己构建的代码符合系统保障,如果出现代码层面的错误,IDE 就过不去。这也是很多人吐槽的地方,"Java 会把中小型项目写成大型项目","Java 几十行几百行的代码我用 xxx 几行就搞定了"
    但是一旦系统复杂度上升之后,弱类型的语言维护起来会哭爹喊娘,例如某前端语言一个比较奇偶的低级函数不再维护之后,全世界 N 台直接 /间接引用该函数的项目同时崩溃。大家应该都有使用 JS 被重名函数和运算符折磨的经历。
    Java 在引用第三方代码时对系统几乎无影响,重名的都需要指定包路径的引用才能使用。

    弱类型的变量在计算上天生具备劣势,不提 Java 给自身各种类型、数据结构提供执行效率的 jdk 和其它库,就简单的直接运算,弱类型都必须先确定上下文类型。

    当然两者在其它地方也有差异:
    IO 层面:[https://www.toptal.com/back-end/server-side-io-performance-node-php-java-go]
    WEB 层面:[https://www.linkedin.com/pulse/java-vs-php-web-fadi-botros] 此文首先就提到了 STRONGLY TYPED 和 JIT

    当然纠结这些是完全没有必要的,试想一下三五十年后,当计算机性能更新换代到现在无法想象的程度,当新的 xx 语言在编译、开发效率、执行性能上完全秒杀我们使用的这些 90 年代语言的时候。现在所谓的性能其实都是浮云

    计算机科学的美妙也不止语言特性这一块,学术性质的了解一下即可
    460881773
        21
    460881773  
       2018-12-06 10:15:25 +08:00
    @shansing
    @finian
    多谢 dalao 科普
    crist
        22
    crist  
       2018-12-06 10:41:39 +08:00
    你图里的 PHP 7 不是比 Java 还要快么。手动捂脸。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2804 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:38 · PVG 21:38 · LAX 05:38 · JFK 08:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.