IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP8/PHP7/C/Golang/Lua/LuaJIT性能对比测试 -> 正文阅读

[PHP知识库]PHP8/PHP7/C/Golang/Lua/LuaJIT性能对比测试

? ? 因为已经使用了超过7年的PHP 5已经不能满足现在系统需要了,即便是编译也因为OpenSSL版本太新无法兼容,即便是打了Patch勉强可以,也感觉是时候应该换个工具用来给应用团队开发产品了。这样一件事情,在我们这种开源的Team中其实尤为谨慎,因为我们对选择一个工具环境或平台架构每次都是使用超过5年以上的生命周期。这次就顺着选择来做了一轮测试。

? ? 我们采用的是HardCore硬核测试方法,这是被很多很多人鄙视的测试方法,因为大家觉得简单。我们恰恰觉得这种测试是非常非常好的。测试无非是测试代码到CPU、或代码到RAM的性能,比如Golang如果测试内存Copy性能非常好,比C语言都要强,这种测试只能是"Golang 官方"做的事情,为了显得这种语言牛逼而干的事。我们不能因为语言有差异就倾斜,所以最后选择HardCore针对不同的语言进行。如果读者还不信服,那么请问你买CPU是看CPU有什么指令集还是看CPU到底快不快?如果读者还不信服赶紧关浏览器吧,我们叫不醒一个装睡的人。

测试环境

  • 硬件环境:VirtualBox虚拟机
  • CPU类型:AMD 5800H (该CPU性能目前秒杀Intel同级别几万块钱的笔记本)
  • 内存:512MB
  • 操作系统:OpenWRT 19.07.8 X86_64版

在测试中所使用的PHP8使用了本人开发的FRICC2高性能PHP源码加密,并且采用了静态编译进入PHP环境中,该程序不会提升PHP解析器性能,主要实现的是对源码进行加密保护,采用静态编译后经过去符号处理,极难跟踪破解。

OpenWRT操作系统是一种通信产品用的操作系统,适用于路由器或各类网关,也支持x86架构,可以上网购买《跟hoowa学做智能路由》书学习这个操作系统。该系统因采用了优化版的编译器,同等硬件下其性能比目前流行发行版Linux更高。

测试程序

PHP

#不论PHP7 PHP8都采用此代码
<?php

$abc=0;
for ($i=0;$i<500000000;$i++) {
        $abc++;
}
echo "=$abc=$i=\n";

?>

C

#include "stdint.h"
#include "stdio.h"

int main(void)
{
        uint32_t abc,i;
        abc=0;
        for (i=0;i<500000000;i++) {
                abc++;
        }
        printf("=%d=%d=\n",abc,i);
        return 0;
}

Golang

package main

import "fmt"

func main() {
        var sum, i uint32
        for i = 0; i < 500000000; i++ {
                sum++
        }
        fmt.Println("sum=,i=", sum, i)
}

Lua

-不论lua还是luajit都采用这个代码
abc=0

for var=1,500000000,1 do
        abc = abc+1
end
print("=",abc,"=",var,"=")

测试采用多次测试,以下显示中间结果

# PHP 7.2.34
root@OpenWrt:~# time php-cli t.php
=500000000=500000000=
real    0m 16.23s
user    0m 16.22s
sys     0m 0.00s

# PHP 8.0.9 (no-JIT)
root@OpenWrt:~# time /appenv/bin/p8 t.php
=500000000=500000000=
real    0m 9.14s
user    0m 9.13s
sys     0m 0.00s

# PHP 8.0.9 (JIT)
root@OpenWrt:~# time /appenv/bin/p8 t.php
=500000000=500000000=
real    0m 0.47s
user    0m 0.47s
sys     0m 0.00s

# Lua 5.1.5
root@OpenWrt:~# time lua t.lua
=       500000000       =       nil     =
real    0m 20.10s
user    0m 20.08s
sys     0m 0.00s

# LuaJIT 2.1.0-beta3
root@OpenWrt:~# time luajit t.lua
=       500000000       =       nil     =
real    0m 0.35s
user    0m 0.35s
sys     0m 0.00s

# Golang 1.15.5
root@OpenWrt:~# time ./testgo
sum=,i= 500000000 500000000
real    0m 0.12s
user    0m 0.11s
sys     0m 0.00s

# GCC 7.4.0
root@OpenWrt:~# time ./t
=500000000=500000000=
real    0m 0.28s
user    0m 0.28s
sys     0m 0.00s

# GCC 7.4.0 O2
root@OpenWrt:~# time ./t
=500000000=500000000=
real    0m 0.00s
user    0m 0.00s
sys     0m 0.00s

表格显示

PHPPHPPHP-JITLuaLuaJITGolangC-GCCC-GCC-O2
7.2.348.0.98.0.95.1.52.0.1-beta37.4.07.4.0
16.23s9.14s0.47s20.10s0.35s0.12s0.28s<=0.00s

测试结论

PHP评价,PHP8即便不开启JIT也比PHP7性能高很多,开启JIT后性能差距进一步拉大(PHP8的JIT来自LuaJIT项目中的DynASM项目),通过与LuaJIT对比感觉未来PHP8-JIT还有改善空间进一步提升性能。同时PHP7大量内存泄漏的问题得到了改善,PHP8开始全面启用了安全内存分配,所以推荐使用者尽快升级使用PHP8。

Lua评价,Lua真的很慢很慢,经过LuaJIT后速度提升非凡呀,多亏了DynASM项目的贡献。只占用了几百K空间的情况下便实现了在内存中将Lua代码编译为汇编代码。

Golang评价,无需置疑的是在这次测试中Golang性能非常好,但同时这个语言的某些让人受不了的设计特性也让我们在接下来的项目开发中首先砍掉了:Golang感觉就像是C语言的gcc -static静态编译+一个函数库。什么东西都巨大无比,比如这个测试代码编译后达到了1.5MB的容量,这让我们无法在低端路由器上开发任何产品。

C评价,没办法评价整个Linux的内核还是底层系统API库全是由C语言开发的,这咋评价,且由于测试精度的问题当-O2优化以后已经<=0.00s了。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-18 12:29:47  更:2021-08-18 12:30:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 12:55:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码