热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP8确认支持JIT,加上Swoole后快到飞起

Phoronix在PHP7.3Alpha1发布时,曾进行过一项基准测试,结果发现在常用的PHPBench基准测试中,PHP7.3.0Alpha1比之前的PHP7.2稳定版本快约7%,比PHP7.0快22%;可以说PHP7.3版本的性能已经到

自 1994 年 PHP诞生 以来, PHP语言经历了许多改进,其中性能是开发人员在评估新版本时考虑的主要标准之一。

之前的版本暂且先不提,咱们可以先来唠唠目前使用的PHP7.3版本,大家都知道 PHP 7 发布的时候号称比 PHP5.6 快两倍,那PHP7.3的性能如何呢?

Phoronix 在 PHP 7.3 Alpha1 发布时,曾进行过一项基准测试,结果发现在常用的 PHPBench 基准测试中(下图),PHP 7.3.0 Alpha 1 比之前的 PHP 7.2 稳定版本快约 7% ,比 PHP 7.0 快 22% ;

可以说PHP7.3版本的性能已经到了一定的地步,但是实际上这些优化似乎已经走到极限了。现在 JIT 从底层着手,被认为是目前提升 PHP 性能的最佳出路。关于PHP8是否引入 JIT 的官方投票结果已于本月1号公布,因为一部分大佬(里面有鸟哥)投了赞成票!

根据官方说法:PHP JIT 对于使用 PHP 的网站来说提速可能并不明显,因为 JIT 在 CPU 密集型的代码上效果最好,所以PHP8的JIT作用主要是发挥数学领域。

而一般情况下,用 PHP 编写的程序都是 I/O 密集型的。用人话来讲就是:PHP 程序往往受限于 I/O 而不是 CPU,使 PHP 代码运行速度变慢的因素往往是它们正在执行的 I/O 操作,包括连接、读取和写入数据库、高速缓存、文件与套接字等。(以上两段消息来源于官方:)

那么这个时候Swoole的出现正好是解决IO密集型问题,优势:常驻内存,避免重复加载带来的性能损耗,提升海量性能,协程异步,提高对 I/O 密集型场景并发处理能力(如:百度地图、百度订单中心、虎牙直播等);方便地开发Http、WebSocket、TCP、 UDP 等应用,可以与硬件通信,使得PHP也可以使用高性能Swoft 微服务 架构,重新定义PHP!

目前Swoole的定位是为高级PHPer所打造的,涉及知识点较复杂;但是这个并不妨碍初中级程序员去学习并掌握它,PHP并发编程、Swoft微服务等是PHP程序员进阶为高级工程师、架构师的必备技能!为了大家能够顺利进阶中高级程序员、架构师,我为大家准备了一套精品福利!

JIT 带来的性能提升对整个语言使用场景的扩展及语言生态发展的支持,可以加速语言的发展(更多人可以参与进来),同时也可以减少目前使用 C 开发容易出现的内存管理、溢出等问题。很多PHPer把自己局限在一个角落里面,其实大家应该去拥抱PHP带来的变化与生态,Swoole解决了IO密集场景问题,JIT解决了计算密集场景问题,未来PHP的发展不会差到哪里去的;这套教程针对那些1-6年PHP开发,助大家顺利进阶为一名优秀的CTO、架构师!

领取方式:点赞关注小编后私信【资料】获取资料领取方式!

部分资料展示:

前60名限时精品福利:

分布式消息中间件及多进程实战

Redis缓存击穿/缓存雪崩预防策略

腾讯高级PHP工程师精品笔试题

Swoole并发百万的协程使用及分析

领取方式:点赞关注小编后私信【资料】获取资料领取方式!


推荐阅读
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • EasyMock实战指南
    本文介绍了如何使用EasyMock进行单元测试,特别是当测试对象的合作者依赖于外部资源或尚未实现时。通过具体的示例,展示了EasyMock在模拟对象行为方面的强大功能。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • Python库在GIS与三维可视化中的应用
    Python库极大地扩展了GIS的能力,使其能够执行复杂的数据科学任务。本文探讨了几个关键的Python库,这些库不仅增强了GIS的核心功能,还推动了地理信息系统向更高层次的应用发展。 ... [详细]
  • 本文介绍了如何利用Java中的URLConnection类来实现基本的网络爬虫功能,包括向目标网站发送请求、接收HTML响应、解析HTML以提取所需信息,并处理可能存在的递归爬取需求。 ... [详细]
  • 深入解析IGMP各版本特性及其演进
    本文详细探讨了Internet组管理协议(IGMP)的不同版本,包括IGMPv1的基础功能、IGMPv2的增强特性和IGMPv3的重要改进。特别分析了IGMPv3如何支持特定源组播(SSM)模型,并介绍了各版本之间的主要差异。 ... [详细]
  • MySQL锁机制详解
    本文深入探讨了MySQL中的锁机制,包括表级锁、行级锁以及元数据锁,通过实例详细解释了各种锁的工作原理及其应用场景。同时,文章还介绍了如何通过锁来优化数据库性能,避免常见的并发问题。 ... [详细]
  • 本文探讨了如何利用SqlDependency执行复杂的SQL查询,并确保在多线程环境下的安全性与效率。 ... [详细]
  • Python数据类型6 字典
    字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包 ... [详细]
  • 题目 CF1245F: 清理春天的数学挑战 描述了一个数学问题:给定一个区间 [L, R](0 ≤ L, R ≤ 10^9),求该区间内满足 x + y = x ∧ y 的数对 (x, y) 的总数。 ... [详细]
  • 本文深入探讨了JavaScript中实现继承的四种常见方法,包括原型链继承、构造函数继承、组合继承和寄生组合继承。对于正在学习或从事Web前端开发的技术人员来说,理解这些继承模式对于提高代码质量和维护性至关重要。 ... [详细]
  • 本文详细介绍了在使用Socket进行网络编程时,遇到链接器错误`undefined reference to WSAStartup@8`的解决方案,适用于多种开发环境。 ... [详细]
  • 深入解析进程、线程与协程的关系及差异
    本文详细探讨了进程、线程和协程这三个概念的基本定义、功能特点以及它们之间的相互关系。通过对比分析,帮助读者更好地理解这三种并行计算模型在实际应用中的选择与运用。 ... [详细]
author-avatar
手机用户2502896641
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有