- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读 Preload并且对此感到非常兴奋,但是(正如我通过在 Google 上搜索更多内容所理解的那样)它们在我看来似乎具有相同的定义:
预载 :在服务器启动时加载已编译的 PHP 文件,并使所有定义的类和函数在 future 请求的上下文中永久可用(据我了解 here)
JIT : 在运行时编译文件而不是在执行之前
哪个对性能影响更大?特别是在框架上
最佳答案
这里的混淆是在“编译”的两种不同含义之间;或者,实际上,相同的含义 - 将高级程序转换为一组低级指令 - 对同一个程序应用两次。
自 PHP 4 起,人类编写的 PHP 代码已被自动编译为一种更抽象的语言,称为“操作码”。这些充当“虚拟机”的指令,但仍然非常高级:每个操作代码触发 Zend 引擎中的整个子例程。
OpCache自 5.5 版以来 PHP 包含的扩展不仅缓存这些操作码以节省重新编译的时间,它还通过操作它们来执行大量优化。预加载是该机制的一部分:它运行编译和优化步骤,并保存操作代码以供多个 PHP 进程重用。
然而,这些操作码距离 CPU 实际运行的代码还有很长的路要走。执行它们的虚拟机在技术上是一个解释器,通过一系列指令工作,甚至对于像 $x + $y
这样简单的事情也执行多个步骤。 .
PHP 8 中 JIT 的基本思想是用第二个编译器补充该解释器 - 这一次,从操作代码编译到实际的机器指令。更具体地说,JIT 编译器在运行时查看一段代码(因此是“及时”),并生成一组 CPU 指令来实现它。
现在您可能想知道为什么我们不尽早做这件事 - Just In Time 似乎与预加载相反!优点是 JIT 编译器可以查看代码的实际使用方式,而不是所有可能的使用方式。解释器查看 $x + $y
的操作码必须考虑这样一个事实,即每次代码运行时,这些变量可能是整数、浮点数、字符串或 +
需要抛出错误。 JIT 编译器可以看到正在运行的程序通常将它们都作为整数,并为该场景编译一些快速代码。当其他场景出现时,JIT 编译器会返回给普通的解释器。
关于php - 在 PHP 7.4 上预加载和 JIT(即将在 PHP 8 上发布)有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58228426/
我是一个非常基础的 git 用户;我基本上只使用命令 git add -a(修改后添加文件)然后 git commit -m "what I did" 然后 git push (将其推送到我的服务器)
我有两个用户选择的日期:开始日期和结束日期。它们是 NSDate 实例,我必须将它们作为 NSNumber 的参数发送。如何以秒为单位将它们转换为 NSNumber? 最佳答案 使用下面的代码: N
我正在构建一个应用程序,用户可以在其中无限次操作 svg 对象(例如图像),即旋转和缩放它们。我使用 Raphael.js 来处理 SVG。 如何在应用新转换之前将对象“重置”到其初始状态,以便新转换
我想在调用我的应用程序中的函数时进行记录。有没有一种方法可以监听调用的函数并在此类事件上运行代码? 如果是这样,我从哪里开始研究如何做到这一点? 最佳答案 只需将日志记录直接插入到您想要的位置即可。
void main() { char c; int op; int a=10,b=20,sum; scanf("%c",&c); if(c=='+')
我正在尝试使用 H2 进行集成测试。我希望 H2 数据库在每次测试之间重置为我的 data.sql 。但在建议的解决方案中,我还没有发现有效; @Transactional 和 @DirtiesCon
这个问题在这里已经有了答案: Tokenizing a String but ignoring delimiters within quotes (13 个回答) 关闭6年前。 如何将String按空
我在我的项目中有一个要求,我们有一些输入框,我们应该输入时间。 时间可以以任何格式输入,即 12:30a 或 1230 或 1430 或 14:30 . 以1230 或 1430 格式输入的计时问题是
我对 Jquery UI Resizable 功能有疑问。 我正在使用 Jquery resizable 将 div 调整为不同的宽度和高度。它运行良好,但是当我尝试将高度降低到一个非常低的数字时,它
我刚刚读了an article其中指出: Internet domain addresses opened up to wave of new suffixes Internet naming boa
我有一个对象列表,比方说 List类 Example 有一个成员 a,它是一个字符串: class Example { String a; String b; } 现在我想从List得
假设我有一个只有两列的表格:姓名 和心情。一行包含一个人的名字和他们的心情,如果他们有多种心情,那么多行存储在数据库中。 例如,在数据库中是约翰,他很高兴、兴奋和自豪。 这表示为 John Happy
对于从 (-x 或 0) -> 无穷大的积分,我在 MATLAB 的 quadgk 和 Python 的 quad 例程之间得到不一致的结果。我相信 MATLAB 版本是正确的(基于将 flag 参数
我非常想知道如何修改现有的 LINQ 函数以添加 Func TResult到函数签名,即允许它使用选择器,如 (o => o.CustomField) . 例如,在 C# 中,我可以使用 .IsDis
我是一名优秀的程序员,十分优秀!