你在使用哪种编程语言?快来投票,亲手选出你心目中的编程语言之王 了解详情
写点什么

高性能 PHP 支持静态类型

2013 年 5 月 30 日

PHP+QB 是一个可选的 PHP 虚拟机,它声称在性能上提供了数量级的提升。而负面影响就是它需要所有的内容都必须是静态类型,同时也对数组做了一些限制。

静态 类型声明 是通过PHPDoc 语法的一个扩展添加的。方法需要使用“@engine qb”标记以便声明它们需要在PHP+QB 虚拟机中执行。然后你还必须使用常用的PHPDoc 语法标记返回值、参数以及全局变量的类型。本地变量需要通过@local 标记声明。

在PHP+QB 中,数组和常用的PHP 数组有所区别。文档中是这样说明的:

在PHP 中数组是非常复杂的数据容器。你可以用它存储任何内容。可以通过一个文本字符串或者一个数字引用元素。不同的元素实际上可以是同一个对象。一个数组甚至可以包含它自己。你能够使用PHP 数组构建非常复杂的、有用的结构。然而这种能力和扩展性并非没有成本。如果使用数百万的元素,那么性能和内存负载可能会高的让人难以忍受。

相对而言,PHP+QB 中的数组是非常简单的。我们通常将它称之为C-Array。本质上,在PHP+QB 中,一个数组仅仅是内存中的一个大对象。它的元素按照一个挨着一个的简单方式进行存储。你仅能够通过数字索引引用它们。和正常的PHP 不同的是,在PHP+QB 中插入的顺序也无所谓。在PHP+QB 中, foreach 循环中的$array[0] 无论如何都会出现在$array[1] 前面。

PHP+QB 中的数组可能是固定大小的也可以是动态扩容的。对于能够扩容的数组而言,如果其中的元素被移除,那么它并不会自动收缩,你需要调用 unset() 函数才能进行收缩。

该引擎支持完整范围的有符号和无符号整数类型,以及32 位和64 位浮点数类型。字符串由一个整数数组进行表示。尽管增加了PHP+QB 支持标记的方法依然能够访问$this 变量的属性,但是该引擎并不支持对象。

查看英文原文 High Performance PHP with Static Typing

2013 年 5 月 30 日 09:071945
用户头像

发布了 321 篇内容, 共 104.9 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

「抖音同款播放器」上市:有效解决卡顿、黑屏和模糊

字节跳动技术团队

夕四今晚加班到2点30,而王二还不打算走《打工人的那些事》

谙忆

区块链在数字版权领域的应用发展报告(2020)

CECBC区块链专委会

版权保护

京东支付SDK重构设计与实现

京东数科风险算法与技术

【LeetCode】子集问题debug模式查看数据变化

HQ数字卡

算法 LeetCode 2月春节不断更

翻译:《实用的Python编程》README

codists

Python

2021最新「阿里」Java高级工程师面试高频题:JVM+Redis+并发+算法+框架

比伯

Java 编程 架构 面试 计算机

如何基于Spring Aware和InitializingBean接口实现策略模式

技术进阶之路

Java spring 5 Java设计模式

区块链--另一场改变社会组织方式的工业革命

CECBC区块链专委会

区块链

分页方式,看这一篇就够了。

大伟

分页

管理笔记[4]:组织管理的目标就是实现1+1>2

俊毅

中国为什么加快推进数字人民币

CECBC区块链专委会

数字货币

产品训练营第三次作业

Geek_79e983

静默安装Oracle也没那么恐怖

MySQL从删库到跑路

oracle

精美的淘客项目完全开源啦,确定不来围观吗

Silently9527

Vue mybatis springboot uniapp

《学会写作》学习笔记之如何拟标题

JiangX

28天写作

Gradle Docker插件将SpringBoot应用程序打包为Docker镜像

wjchenge

Docker SpringBoot 2 Gradle

Java并发包源码学习系列:阻塞队列实现之SynchronousQueue源码解析

云流

Java 编程

科技,亲吻这个特别的春节

脑极体

全新演绎!阿里甩出2021最新秒杀系统设计实录!这也太香了吧

程序员小毕

Java 架构 面试 系统设计 高并发

硬核!八张图搞懂 Flink 端到端精准一次处理语义 Exactly-once(深入原理,建议收藏)

五分钟学大数据

大数据 flink

不会开发的你也能管理好企业漏洞,开源免费工具:洞察(insight II)

BigYoung

安全 安全漏洞 28天写作 2月春节不断更

欢迎来到,2021摄像机竞技场

脑极体

用最少人力玩转万亿级数据,我用的就是MongoDB

dbaplus社群

看完字节大佬的算法刷题宝典,我直接手撕了500道算法算法题

云流

程序员 面试 算法

如何基于Spring 事件驱动模型实现业务解耦

技术进阶之路

Java spring 架构

PanoVideoCall 的 Electron Demo 开源了

拍乐云Pano

html Mac windows Electron js

架构训练营大作业(一)

一期一会

架构训练营大作业(二)

一期一会

最简单的map,filter,forEach,every,some的使用教学

coolFish(呔呆)

方法 Vue 前端 数组 js

webpack | 进阶用法2:代码分割和动态引入的实现方式

梁龙先森

前端工程 webpack 28天写作 2月春节不断更

围绕“三个问题”开展的网易云音乐数据基础建设

围绕“三个问题”开展的网易云音乐数据基础建设

高性能PHP支持静态类型-InfoQ