Press "Enter" to skip to content

Yac 2.4.0发布 - 小值读取性能提升64%

Yac 2.4.0 来了。起因是博客缓存被空数组挤爆:WordPress 的搜索负缓存和 Akismet 的 cron 会写入大量没人读的空数组,持续吃 values 内存还引发 recycle 误伤。这个版本最大的改动是 embedded values——小标量直接编码进 slot 的指针字,不再写 values 区;另有 LZ4 替换 FastLZ(解压快 ~3.5x)、get() 支持 $default、dump() 支持分页与逐条 hits/atime 统计。混合负载读取提升 70%,我的博客 values 内存从 23.5M 降到 12.4M。

Filed in AI Coding, PHP7, PHP8, PHP应用
with 0 Comment

PHP8.0的Named Parameter

年前花了点时间,对Yar的性能做了一些做了一些提升,但是也遇到一个让我有点不舒服的当初没有良好设计遗留的问题,就是在并行调用RPC的时候,现在的方法原型是:

public static Yar_Concurrent_Client::call(string $uri, string $method, ?array $arguments = NULL, ?callable $callback = NULL, ?callable $error_callback = NULL, ?array $options = NULL):null|int|bool {}

是不是一看就很头大?

Filed in PHP应用, 随笔
with 25 Comments

使用SSE2指令高效实现strtolower

PHP的类名,函数,方法名是不区分大小写的,也就是说无论你怎么定义函数名,实际上在引擎层面查找的时候都是会统一转换成小写形式来做的。 也就是说strtolower的应用是非常普遍的。

当然,PHP也做了很多的设计来避免对字符串做过多的字符串小写操作,比如如果我们在PHP代码中写下:

CamelFunc();

这样的函数调用的时候, PHP会在编译时刻就把CamelFunc全部小写,然后存储在原始字面量之后(PHP-5.4 literals)。

Filed in GNU C/C++, PHP8, PHP应用, 随笔
with 15 Comments

PHP 8新特性之Attributes(注解)

PHP8的Alpha版本,过几天就要发布了,其中包含了不少的新特性,今天呢,我想谈谈Attributes,为啥呢, 是昨天我看到很多群在转发一个文章,叫做《理解PHP8中的Attributes》,说实在的,这篇文章应该是直接从英文翻译过来的,写的晦涩难懂,很多同学看完以后表示,看的一头雾水,不知道在说啥。

于是我想,就用一篇文章来简单说说这是个啥。

Filed in PHP8, PHP应用, 随笔
with 76 Comments