https://github.com/swoole/phpy/blob/main/docs/benchmark.md
压力测试
压测脚本中创建了一个 PyDict ,分别读写 PHP 代码和 Python 代码执行 1000 万次。
请注意设需要构造一个 1000 万个元素的 HashTable,需要至少 2G 以上内存空间才可以运行此测试
PHP
Python
import time
my_dict = {}
COUNT = 10000000
n = COUNT
start_time = time.time()
for i in range(n):
my_dict["key-" + str(i)] = i * 3
elapsed_time = time.time() - start_time
print(f"dict set: {elapsed_time:.6f} seconds")
n = COUNT
total = 0
start_time_get = time.time()
for i in range(n):
total += my_dict["key-" + str(i)]
elapsed_time_get = time.time() - start_time_get
print(f"dict get: {elapsed_time_get:.6f} seconds")
PHP 数组
结果对比
(base) htf@swoole-12:~/workspace/python-php/docs/benchmark$ php dict.php
dict set: 4.663758 seconds
dict get: 3.980076 seconds
(base) htf@swoole-12:~/workspace/python-php/docs/benchmark$ php array.php
array set: 1.578963 seconds
array get: 0.831129 seconds
(base) htf@swoole-12:~/workspace/python-php/docs/benchmark$ python dict.py
dict set: 5.321664 seconds
dict get: 4.969081 seconds
(base) htf@swoole-12:~/workspace/python-php/docs/benchmark$
以 Python 测试为基准:
[td]脚本名称[/td]
[td]Set[/td]
[td]Get[/td]
dict.php
114%
125%
array.php
337%
599%
其他
phpy 这个项目已经进化到可以调用任何 python 内置常量、函数、模块,包括 print 、compile 、eval 、exec 等等,也就是说你完全可以用 php 的语法来写 python ,比如
https://docs.python.org/zh-cn/3/library/ast.html#module-ast
示例代码:print(ast.dump(ast.parse('x = 1'), indent=4))
php 写法:
$py = PyCore::import('builtins');
$ast = PyCore::import('ast');
$py->print($ast->dump($ast->parse('x = 1'), indent: 4));
以上只是写着玩,phpy 的初衷是用 python 来弥补 php 生态上的不足,现在你可以用 php 来跑大模型了