https://github.com/kenjis/php-framework-benchmark/的测试,本地搭了一个测试了一下做了一点小小的 patch,不然用例是错的
https://gist.github.com/anonymous/5df1541bdbfa7b8cfe5513a361612893结果如下,
|framework |requests per second|relative|peak memory|relative|
|-------------------|------------------:|-------:|----------:|-------:|
|ci-3.1 | 5,778.00| 6.8| 0.38| 1.0|
|slim-3.0 | 4,808.94| 5.7| 0.56| 1.5|
|laravel-5.3 | 849.19| 1.0| 2.04| 5.4|
注释掉 laravel 中默认开启的,但是无用的 middleware 之后,结果如下
|framework |requests per second|relative|peak memory|relative|
|-------------------|------------------:|-------:|----------:|-------:|
|ci-3.1 | 6,256.39| 4.3| 0.38| 1.0|
|slim-3.0 | 4,977.89| 3.4| 0.56| 1.5|
|laravel-5.3 | 1,453.05| 1.0| 2.02| 5.3|
把 fpm 的 max_children 从 2 改为 1,结果如下
|framework |requests per second|relative|peak memory|relative|
|-------------------|------------------:|-------:|----------:|-------:|
|ci-3.1 | 3,293.76| 4.1| 0.38| 1.0|
|slim-3.0 | 2,583.93| 3.2| 0.56| 1.5|
|laravel-5.3 | 803.36| 1.0| 2.02| 5.3|
laravel 跟 slim 和 ci-3.1 相比,在 hello world 的比拼下是比较慢,但是也绝对不是 1000rps 都扛不住的地步。
而且真实的业务,不可能就是输出一个写死的 hello world,业务逻辑自身有 php 代码,还要访问 db 和 cache,这些大部分占执行时间的代码都是一样的,框架执行时间只是小部分,框架占用的内存也只是小部分,把只占用 20%不到的资源,优化提高 100 倍,也只是把开销从 100 减少到 80 而已,这点儿性能提升或者内存减少,毫无价值。
最后,把性能拿出来说事前,得先把日 PV 做到 3000 万以上,否则那点儿访问量用什么还不都一样。