我开发了一个语法与PHP相似度90%的静态语言
该语言相比PHP增加了类型断言、泛型、协程等支持,语法与PHP基本完全一致(除了PHP没有的东西),大量的全局函数移动到标准库。
phper们熟悉的$符号,静态调用::,完全一致,phper可以无缝上手,性能已经和golang、java达到了一个级别(JVM20多年的优化太强,还无法超过,但相比PHP已经是数十倍的翻倍)。
不用再花时间搞PHP扩展和配置
我还实现了php的万能数组,这也是很多php开发者们舍不得离开PHP的原因,在高性能场景可以选用高性能的类型数组,非性能敏感性场景则可以使用万能数组;最重要的是这个万能数组我采用静态类型实现,不依赖运行时,性能是php的数十倍,且通过语法糖,让它与PHP的数组写法完全一致,零成本迁移,我甚至在中途对做了大量工作改变了普通数组的语法,为的就是给万能数组让步。
// 普通数组
string[] $names = {"xiaoming", "xiaoqiang", "xiaogang"};
// 万能数组
$config := [
"title" => "laearnku",
"id" => 12345,
"son" => [
"xx" => "yy",
],
];
$config["title] = "重新赋值";
除了性能抗打,最重要的引入了协程,虽然php早就有了swoole,但是闭源不说,对windows平台支持差,用docker来映射本地文件开发时磁盘加载慢,除了开发起来不爽,很多人不愿意用,开发者也是问题,phper开发人员质量参差不齐,很多低水平的php开发者根本拿不住swoole。
// 协程
class Abcd {
public function abcd() :bool {
go self::test(); // 开启协程
return true;
}
public function test(){
...
}
}
自制编程语言也是我的梦想之一,我争取在一个月内整理好并且完善,开发好中央仓库然后开源beta版。
这个语言我暂时命名为sola,也希望能为它征集到一个新的名字
下面是简单的测试
测试对比对象
- Go 1.23 - AOT 编译,完全优化
- Java 21 JVM - HotSpot C2 JIT 编译器
- Python 3.13.1 - 解释执行 + 部分 JIT 优化
- PHP 8.2.0 - OPcache + JIT (tracing 模式)
- Sola JIT - SSA + O1 优化
测试环境
- 操作系统: Windows 11
- 测试日期: 2026-01-09
性能测试结果
1. SimpleAdd (简单加法: a + b)
| 语言/运行时 | 迭代次数 | ns/op | ops/sec | 相对性能 |
|---|---|---|---|---|
| Go 原生 | 10,000,000 | ~2-3 ns | ~500M | 1.0x (基准) |
| Java JVM | 10,000,000 | ~3-5 ns | ~300M | 0.6x |
| Sola JIT | 10,000,000 | ~5-10 ns | ~150M | 0.3x |
| PHP 8.2 JIT | 10,000,000 | ~50 ns | ~20M | 0.04x |
| Python 3.13 | 10,000,000 | ~41 ns | ~24M | 0.05x |
2. ComplexArithmetic (复杂算术: (a+b)*(a-b))
| 语言/运行时 | 迭代次数 | ns/op | ops/sec | 相对性能 |
|---|---|---|---|---|
| Go 原生 | 10,000,000 | ~3-4 ns | ~300M | 1.0x |
| Java JVM | 10,000,000 | ~4-6 ns | ~200M | 0.7x |
| Sola JIT | 10,000,000 | ~8-12 ns | ~100M | 0.3x |
| PHP 8.2 JIT | 10,000,000 | ~56 ns | ~18M | 0.06x |
| Python 3.13 | 10,000,000 | ~55 ns | ~18M | 0.06x |
3. FibonacciIter(20) (迭代斐波那契)
| 语言/运行时 | 迭代次数 | ns/op | ops/sec | 相对性能 |
|---|---|---|---|---|
| Go 原生 | 10,000,000 | ~10-15 ns | ~80M | 1.0x |
| Java JVM | 10,000,000 | ~15-20 ns | ~60M | 0.75x |
| Sola JIT | 10,000,000 | ~30-50 ns | ~30M | 0.4x |
| PHP 8.2 JIT | 10,000,000 | ~740 ns | ~1.4M | 0.02x |
| Python 3.13 | 1,000,000 | ~430 ns | ~2.3M | 0.03x |
4. Factorial(10) (阶乘)
| 语言/运行时 | 迭代次数 | ns/op | ops/sec | 相对性能 |
|---|---|---|---|---|
| Go 原生 | 10,000,000 | ~8-10 ns | ~100M | 1.0x |
| Java JVM | 10,000,000 | ~10-15 ns | ~80M | 0.8x |
| Sola JIT | 10,000,000 | ~20-40 ns | ~40M | 0.4x |
| PHP 8.2 JIT | 10,000,000 | ~155 ns | ~6.4M | 0.06x |
| Python 3.13 | 1,000,000 | ~232 ns | ~4.3M | 0.04x |
5. Sum(100) (求和 1到100)
| 语言/运行时 | 迭代次数 | ns/op | ops/sec | 相对性能 |
|---|---|---|---|---|
| Go 原生 | 10,000,000 | ~30-40 ns | ~30M | 1.0x |
| Java JVM | 10,000,000 | ~40-60 ns | ~20M | 0.7x |
| Sola JIT | 10,000,000 | ~80-120 ns | ~10M | 0.3x |
| PHP 8.2 JIT | 1,000,000 | ~1,075 ns | ~930K | 0.03x |
| Python 3.13 | 1,000,000 | ~1,425 ns | ~700K | 0.02x |
6. SumOfSquares(100) (平方和)
| 语言/运行时 | 迭代次数 | ns/op | ops/sec | 相对性能 |
|---|---|---|---|---|
| Go 原生 | 10,000,000 | ~40-50 ns | ~25M | 1.0x |
| Java JVM | 10,000,000 | ~50-70 ns | ~18M | 0.7x |
| Sola JIT | 10,000,000 | ~100-150 ns | ~8M | 0.3x |
| PHP 8.2 JIT | 1,000,000 | ~1,259 ns | ~795K | 0.03x |
| Python 3.13 | 1,000,000 | ~2,369 ns | ~422K | 0.02x |
性能梯队
第一梯队:AOT 编译语言
- Go:完全编译,内联优化,寄存器分配完美
- 性能: ★★★★★
第二梯队:成熟 JIT
- Java HotSpot C2:多年积累的优化技术
- 性能: ★★★★☆
第三梯队:新 JIT 实现
- Sola JIT:基础优化
- 性能: ★★★☆☆
第四梯队:脚本语言 JIT
- PHP JIT:针对脚本特性的 JIT
- 性能: ★★☆☆☆
第五梯队:纯解释执行
- Python 3.13:主要是解释执行
- 性能: ★☆☆☆☆
关于 LearnKu
推荐文章: