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

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

  •  
  •   cc959798 · 44 天前 · 1814 次点击
    这是一个创建于 44 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有经验的大佬分别说说

    22 回复  |  直到 2018-12-06 10:41:39 +08:00
        1
    DamonLin   44 天前
    你指的是什么慢?
        2
    allenhu   44 天前   ♥ 1
    你有这个发帖的时间都搜出几十条结果了,不是实在看不下去,我都懒得回复
        3
    cc959798   44 天前
    @DamonLin 计算性能
        4
    cc959798   44 天前
    @allenhu 可你还是回复啦,你可以不回复我的
        5
    U2Fsd   44 天前   ♥ 3
        6
    U2Fsd   44 天前
    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/
        7
    KasuganoSoras   44 天前
    PHP 是脚本解释语言,和 Java 当然没法比性能,二者用途也不完全相同,PHP 更偏向于写 Web 类的东西
        8
    460881773   44 天前
    因为 java 是编译语言啊 运行需要先编译成计算机能直接识别的语言。php 为解释型语言 运行的时候计算机需要理解这个语言是什么意思然后再执行 ,一个是直接执行一个是理解后再执行肯能效率不一样啊
        9
    yixiang   44 天前
    你图里的 PHP 7 不是比 Java 还要快么。手动捂脸。
        10
    yixiang   44 天前
    @yixiang 看错,以为图是楼主发的。
        11
    shansing   44 天前
    @460881773 Java 是编译成字节码文件,之后用 Java 虚拟机执行,不是计算机能“直接”识别的语言。PHP 到要执行的时候也是编译再运行的。早期 PHP 的编译很快,因为不需要做优化,后来的版本可能不同了。( PHP 也可以借助 Opcache 缓存字节码文件。)
        12
    isCyan   44 天前   ♥ 1
    从来不觉得 PHP 慢,也没觉得 Java 快
        13
    lychnis   44 天前 via Android
    鱼和熊掌不可兼得 开发效率运行效率选一个
        14
    t6attack   44 天前 via Android
    如果遇到 php7 性能触顶,说明你的项目成功了,或者你们公司做的是大生意。偷着乐去吧 。
        15
    netherlanddennis   44 天前
        16
    finian   44 天前
    @460881773 #8 你要说运行,Java 和 PHP 一样,都是解释运行的。性能差异体现在虚拟机(解释器)实现上。
        17
    sagaxu   44 天前 via Android
    @yixiang 他那个 JAVA 代码,用的是泛型数组,Array<ListInteger>开销大,所以比较慢,换成 int[]就跟 c++差不多了
        18
    FakeLeung   44 天前 via Android
        19
    yuhhai   43 天前 via Android
    @460881773 话说 Java 编译的字节码跟二进制执行到底慢在哪里了
        20
    zzzzzzZ   43 天前
    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 年代语言的时候。现在所谓的性能其实都是浮云

    计算机科学的美妙也不止语言特性这一块,学术性质的了解一下即可
        21
    460881773   43 天前
    @shansing
    @finian
    多谢 dalao 科普
        22
    crist   43 天前
    你图里的 PHP 7 不是比 Java 还要快么。手动捂脸。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2248 人在线   最高记录 4236   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 14:20 · PVG 22:20 · LAX 06:20 · JFK 09:20
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1