什么是opcode缓存? 当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode cache的目地是避免重复编译,减少CPU和内存开销。如果动态内容的性能瓶颈不在于CPU和内存,而在于I/O操作,比如数据库查询带来的磁 ...
分类:
Web程序 时间:
2017-03-27 11:26:18
阅读次数:
296
什么是opcode缓存? 当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode cache的目地是避免重复编译,减少CPU和内存开销。如果动态内容的性能瓶颈不在于CPU和内存,而在于I/O操作,比如数据库查询带来的磁 ...
分类:
Web程序 时间:
2017-03-20 19:16:07
阅读次数:
255
该方法去除两边的空白符 原理: 看看源码实现 public String trim() { int len = value.length; int st = 0; char[] val = value; /* avoid getfield opcode */ while ((st < len) && ...
分类:
编程语言 时间:
2017-03-08 21:13:47
阅读次数:
216
这篇文章,研究一下php代码是如何解释和执行以及PHP脚本运行的生命周期。 概述 PHP服务的启动。严格来说,PHP的相关进程是不需要手动启动的,它是随着Apache的启动而运行的。当然,如果有需要重启PHP服务的情况下也是可以手动重启PHP服务的。比如说在有开启opcode的正式环境更新了代码之后 ...
分类:
Web程序 时间:
2017-02-15 16:40:02
阅读次数:
222
vld介绍 vld是PECL(PHP 扩展和应用仓库)的一个PHP扩展,现在最新版本是 0.14.0(2016-12-18),它的作用是:显示转储PHP脚本(opcode)的内部表示(来自PECL的vld简介)。简单来说,可以查看PHP程序的opcode。 vld扩展的安装 1、下载官方插件安装压缩 ...
分类:
编程语言 时间:
2017-02-07 16:37:46
阅读次数:
425
PHP语言性能优化优化啥? 如下图所示,PHP直接执行的是opcode,所以我们尽量减少扫描和转码解析。 这是我们第一个优化点,尽量使用PHP内置的函数代替我们的代码来实现同样的功能。 和我们自己写的代码一样,PHP本身内置了很多函数,所以实现同一个功能我们可以使用多个内置函数来实现,那么是不是内置 ...
分类:
编程语言 时间:
2017-02-06 17:01:33
阅读次数:
122
PHP服务加速缓存优化PHP缓存原理:当客户端请求一个PHP程序时,服务器的PHP引擎会解析改PHP程序,并将其编译为特定的操作码(OperateCode简称opcode),改文件是执行PHP代码后的一种二进制表示形式。默认情况下,这个编译好的操作码文件由PHP引擎执行后丢弃。而操作码缓存的原理..
分类:
Web程序 时间:
2017-02-05 11:35:49
阅读次数:
269
1.常用性能测试工具手段(linux平台) top命令 sysstat jmeter [推荐] nmon [类似TOP命令] fio [测试磁盘的IOPS] webbench ab time命令可以看脚本执行所花费的时间(user列) php的vld扩展可以打印生成的opcode 、 [php -d ...
分类:
其他好文 时间:
2016-12-06 13:37:54
阅读次数:
224
引言: 之前一篇文章梳理了String的不变性原则,还提到了一段源码中注释"avoid getfield opcode",当时通过查阅资料发现,这是为了防止 getfield(获取指定类的实例域,并将其值压入到栈顶)这个操作码的执行,这篇文章想从字节码的角度去分析一下。 先看一段代码吧 执行 jav ...
分类:
其他好文 时间:
2016-12-04 17:24:33
阅读次数:
195
在所有编程语言领域,我想字符串应该是地球上最常用的表达手段了吧。 在java的世界里,String是作为类出现的,核心的一个域就是一个char数组,内部就是通过维护一个不可变的char数组,来向外部输出的。 这是jdk一段String类定义,首先类是final,表明类不可被继承;核心域是privat ...
分类:
其他好文 时间:
2016-12-03 02:07:32
阅读次数:
233