热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【嵌入式开发】RaspberryPi树莓派性能测试

RaspberryPi树莓派性能测试目录:CPULinpack基准测试源码编译运行结果WhetstoneDhrystone综合基准测试源码编译运行

Raspberry Pi 树莓派性能测试

目录:

CPU
Linpack基准测试
源码
编译/运行
结果
Whetstone/Dhrystone综合基准测试
源码
编译/运行
结果
OpenSSL安全协议测试
源码
编译/运行
结果
GPU
ioquake3(雷神之锤3修改版)
源码
编译/运行
结果
IO
USB总线
SD卡
NIC(网卡)
编译/运行
结果
路由
方法
结果
电源

CPU

 

Linpack基准测试

 

已经完成对Arm的linpack基准测试, 选用gcc带-O3 (优化等级3)编译代码[1]. 用200大小的数组运行.

 

包括软件浮点

 

源码

 

[2]

 

编译/运行

cc -O3 -o linpack linpack.c -lm
  linpack.c: In function ‘main’:
  linpack.c:69: warning: return type of ‘main’ is not ‘int’
./linpack
  Enter array size (q to quit) [200]: 200

 

结果

 

Crippled

Memory required:  315K.

LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

    Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
       2   0.53  92.45%   1.89%   5.66%   5493.333
       4   1.07  92.52%   2.80%   4.67%   5385.621
       8   2.12  92.45%   2.36%   5.19%   5466.003
      16   4.24  92.45%   2.83%   4.72%   5438.944
      32   8.49  92.11%   2.71%   5.18%   5459.213
      64  16.98  92.05%   2.89%   5.06%   5452.440

 

硬件浮点 (-mfloat-abi=softfp)

Memory required:  315K.
LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

    Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
       8   0.51  90.20%   3.92%   5.88%  22888.889
      16   1.02  89.22%   4.90%   5.88%  22888.889
      32   2.05  90.24%   3.41%   6.34%  22888.889
      64   4.08  91.42%   2.94%   5.64%  22829.437
     128   8.16  91.54%   2.94%   5.51%  22799.827
     256  16.31  91.35%   2.76%   5.89%  22903.800

 

Raspbian下的全硬件浮点 (-mfloat-abi=hard -mfpu=vfp), 频率arm_freq=700

Memory required:  315K.
LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

    Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
      16   0.58  89.66%   3.45%   6.90%  40691.358
      32   1.17  87.18%   4.27%   8.55%  41071.651
      64   2.32  88.36%   3.02%   8.62%  41459.119
     128   4.67  88.22%   3.43%   8.35%  41071.651
     256   9.33  88.85%   3.32%   7.82%  40880.620
     512  18.63  89.00%   2.95%   8.05%  41047.675

 

Raspbian下的全硬件浮点 (-mfloat-abi=hard -mfpu=vfp), 频率arm_freq=1000 core_freq=500

Memory required:  315K.
LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

    Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
      32   0.79  89.87%   0.00%  10.13%  61896.714
      64   1.58  89.24%   1.27%   9.49%  61463.869
     128   3.16  90.19%   1.90%   7.91%  60407.789
     256   6.32  88.13%   3.80%   8.07%  60511.761
     512  12.65  87.83%   3.56%   8.62%  60825.836

 

Gentoo下的全硬件浮点, 带编译器优化(gcc-4.6.3 -Ofast -fno-fast-math), 默认时序

Memory required:  315K.
LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

    Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
----------------------------------------------------
      16   0.56  89.29%   1.79%   8.93%  43084.967
      32   1.13  91.15%   4.42%   4.42%  40691.358
      64   2.25  89.78%   3.56%   6.67%  41853.968
     128   4.51  87.80%   4.21%   7.98%  42358.233
     256   9.01  88.68%   3.88%   7.44%  42155.076
     512  18.01  89.23%   2.78%   8.00%  42434.923

 

Whetstone/Dhrystone综合基准测试

 

用gcc带参数-float-abi=softfp -O3编译全部代码

 

源码

 

测试代码在http://www.rowley.co.uk/arm/whet_dhry.zip.

 

备用地址http://freespace.virgin.net/roy.longbottom/benchnt.zip

 

编译/运行

?

 

结果

 

Dhrystone

Microseconds for one run through Dhrystone: 1.2

Dhrystones per Second: 809061.5

 

Whetstone Crippled

Loops: 1000, Iterations: 10, Duration: 24 sec.

C Converted Double Precision Whetstones: 41.7 MIPS

 

用'gcc -mfpu -float-abi=softfp'重新编译Whetstone, 结果更好:

Loops: 1000, Iterations: 100, Duration: 106 sec.
C Converted Double Precision Whetstones: 94.3 MIPS

 

上面的测试没有带-mfpu=vfp编译, 所以大部分运算时间都花费在SQRT方法上. 用了vfp后提升很大:

Loops: 1000, Iterations: 100, Duration: 15 sec.
C Converted Double Precision Whetstones: 666.7 MIPS

 

OpenSSL安全协议测试

 

源码

 

[3]

 

编译/运行

openssl version;
openssl speed;

 

结果

 

关闭汇编优化:

OpenSSL 0.9.8o 01 Jun 2010
built on: Thu Aug 26 18:56:26 UTC 2010
options:bn(64,32) md2(int) rc4(ptr,int) des(idx,risc1,4,long) aes(partial) blowfish(idx)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -O2 -Wa,--noexecstack -g -Wall
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md2                148.81k      372.18k      624.81k      769.95k      832.90k
mdc2                 0.00         0.00         0.00         0.00         0.00
md4                615.30k     2468.76k     7612.19k    16707.01k    28104.86k
md5                380.13k     1501.12k     4800.77k    11312.81k    21682.77k
hmac(md5)         1022.28k     3480.23k     9587.80k    17492.25k    25441.78k
sha1               303.72k     1092.39k     3106.50k     6302.57k     9852.39k
rmd160             244.29k      849.04k     2414.53k     4747.26k     7513.00k
rc4              14658.70k    16836.49k    17462.03k    17628.21k    17522.08k
des cbc           2913.17k     3221.30k     3289.77k     3360.09k     3367.21k
des ede3          1149.87k     1188.59k     1198.46k     1206.00k     1208.25k
idea cbc             0.00         0.00         0.00         0.00         0.00
seed cbc             0.00         0.00         0.00         0.00         0.00
rc2 cbc           2812.71k     3012.02k     3054.19k     3077.82k     3076.12k
rc5-32/12 cbc        0.00         0.00         0.00         0.00         0.00
blowfish cbc      6091.32k     7007.89k     7250.62k     7288.21k     7163.88k
cast cbc          5068.25k     6020.03k     6345.71k     6367.64k     6260.44k
aes-128 cbc       3205.76k     3497.72k     3616.00k     3652.49k     3665.85k
aes-192 cbc       2730.65k     2981.88k     3073.20k     3102.38k     3111.86k
aes-256 cbc       2383.90k     2596.12k     2659.91k     2702.13k     2732.50k
camellia-128 cbc     0.00         0.00         0.00         0.00         0.00
camellia-192 cbc     0.00         0.00         0.00         0.00         0.00
camellia-256 cbc     0.00         0.00         0.00         0.00         0.00
sha256             679.98k     1629.47k     2905.43k     3708.32k     4175.45k
sha512              41.02k      163.83k      232.63k      318.20k      353.81k
aes-128 ige       3089.03k     3579.08k     3698.68k     3689.14k     3578.18k
aes-192 ige       2641.68k     3019.45k     3111.38k     3144.95k     3035.70k
aes-256 ige       2334.50k     2632.35k     2705.04k     2735.69k     2687.74k
                  sign    verify    sign/s verify/s
rsa  512 bits 0.013747s 0.001193s     72.7    838.4
rsa 1024 bits 0.063481s 0.002742s     15.8    364.7
rsa 2048 bits 0.321250s 0.007378s      3.1    135.5
rsa 4096 bits 1.805000s 0.022528s      0.6     44.4
                  sign    verify    sign/s verify/s
dsa  512 bits 0.011690s 0.013597s     85.5     73.5
dsa 1024 bits 0.027233s 0.031683s     36.7     31.6
dsa 2048 bits 0.073897s 0.087304s     13.5     11.5

 

开启汇编优化:

OpenSSL 1.0.1c 10 May 2012
built on: Sun Jul 29 00:43:16 CEST 2012
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) idea(int) blowfish(ptr)
compiler: armv6j-hardfloat-linux-gnueabi-gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN \
-DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -Wall -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM \
-DSHA512_ASM -DAES_ASM -DGHASH_ASM -O2 -march=armv6j -mfpu=vfp -mfloat-abi=hard -fno-strict-aliasing -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md2                  0.00         0.00         0.00         0.00         0.00
mdc2               724.41k      933.06k     1024.68k     1063.59k     1075.88k
md4               2547.83k     9441.28k    27284.48k    51824.98k    69894.14k
md5               1954.05k     7217.96k    20805.95k    39365.29k    53226.15k
hmac(md5)         3075.61k    10241.88k    26669.65k    44729.00k    55386.11k
sha1              2115.34k     6823.83k    16264.45k    25053.18k    30121.35k
rmd160            1487.88k     4783.96k    10707.71k    15800.32k    19303.08k
rc4              34205.43k    39535.98k    41215.83k    41561.43k    41570.04k
des cbc           6251.12k     6605.08k     6686.81k     6713.01k     6707.54k
des ede3          2326.45k     2368.36k     2385.83k     2397.53k     2391.84k
idea cbc          8758.77k     9421.31k     9607.34k     9653.93k     9687.93k
seed cbc          8274.52k     9036.46k     9264.64k     9321.47k     9284.27k
rc2 cbc           6047.90k     6354.82k     6458.82k     6465.19k     6485.33k
rc5-32/12 cbc    16204.47k    18649.32k    19367.94k    19560.11k    19649.84k
blowfish cbc     11934.03k    13189.85k    13546.92k    13633.19k    13486.76k
cast cbc         10797.59k    11828.46k    12156.58k    12187.65k    12050.43k
aes-128 cbc      12978.72k    14708.69k    15387.40k    15472.93k    15529.06k
aes-192 cbc      11441.49k    12834.60k    13315.69k    13453.78k    13430.80k
aes-256 cbc      10267.01k    11409.83k    11744.41k    11812.86k    11859.64k
camellia-128 cbc     9312.98k    10278.89k    10572.46k    10646.19k    10657.82k
camellia-192 cbc     7541.38k     8140.71k     8325.63k     8370.18k     8361.30k
camellia-256 cbc     7513.97k     8138.65k     8297.98k     8351.40k     8347.65k
sha256            3598.03k     8377.26k    14605.57k    17979.39k    19300.35k
sha512            1080.74k     4322.82k     6151.85k     8416.32k     9418.07k
whirlpool          361.82k      729.24k     1186.42k     1425.38k     1512.79k
aes-128 ige      11702.57k    13853.45k    14429.53k    14671.38k    14057.47k
aes-192 ige      10468.67k    12165.24k    12628.24k    12743.72k    12331.69k
aes-256 ige       9505.78k    10831.25k    11205.36k    11333.43k    10982.74k
ghash            15681.70k    17279.32k    17770.84k    17894.06k    17940.48k
                  sign    verify    sign/s verify/s
rsa  512 bits 0.002185s 0.000217s    457.6   4611.1
rsa 1024 bits 0.011325s 0.000640s     88.3   1563.5
rsa 2048 bits 0.074296s 0.002289s     13.5    436.8
rsa 4096 bits 0.544211s 0.008741s      1.8    114.4
                  sign    verify    sign/s verify/s
dsa  512 bits 0.002157s 0.002262s    463.5    442.0
dsa 1024 bits 0.006234s 0.007123s    160.4    140.4
dsa 2048 bits 0.022247s 0.025884s     44.9     38.6

 

GPU

 

树莓派从USB到HDMI处理h264 1080p电影至少能达到4MB/s.

 

管理员"JamesH"说"基本上1080p30高清的都>40Mb/s." h264也有5MB/s

 

包括WVGA(480p30) 或 720p20的VP8/WEBM

 

ioquake3(雷神之锤3修改版)

 

源码

https://github.com/raspberrypi/quake3

 

编译/运行

- Download source, compile as delivered
- Start game
- Runs at display's native res, in my case 1280x1024
- Bitdepth stuck at 16bpp, not sure how to change, values in q3config.cfg seem to be ignored
- In-game console commands:
\timedemo 1
\demo four

 

结果

armel "driver info" : http://i.imgur.com/wtYhB.jpg armel timedemo score: http://i.imgur.com/i2TkN.jpg 20.2fps
armhf "driver info" : http://i.imgur.com/8nqa1.jpg armhf timedemo score: http://i.imgur.com/dUu0g.jpg 28.5fps

 

IO

 

USB总线

 

  • 所有的IO都用同一个总线, 所以所有IO的总和不可能超过设计的60MB/s速度;
  • 高速USB盘的测试结果显示速度可达30 MB/s:
root@raspberrypi:~# dd if=/dev/sda of=/dev/null bs=32M count=10 iflag=direct
10+0 records in
10+0 records out
335544320 bytes (336 MB) copied, 10.6428 s, 31.5 MB/s

 

SD卡

 

这部分已经移到RPi_SD_cards#Performance

 

NIC(网卡)

 

编译/运行

 

局域网中:

iperf -s

 

树莓派中:

iperf -t 60 -c  -d

 

结果

 

宽带 (Mbit/s) CPU使用率 (峰值) 发行版 内核 备注
52.1 + 46.4 5.1%us, 66.2%sy, 28.7%si Debian Squeeze "debian6-19-04-2012" Linux raspberrypi 3.1.9+ #95 PREEMPT  
91.8 + 36.8 1.6%us, 60.8%sy, 37.5%si Debian Wheezy "Raspbian" Linux raspbian 3.1.9+ #101 PREEMPT  
65.1 + 48.8 1.3%us, 61.9%sy, 36.8%si Arch Linux 2012-04-29 Linux alarmpi 3.1.9-12+ #5 Sat Apr 28 04:49:38 UTC 2012 armv6l ARMv6-compatible processor rev 7 (v6l) BCM2708 GNU/Linux Remote host connected at gigabit
69.5 + 29.1 0.6%us, 55.5%sy, 40.0%si Debian Wheezy "Raspbian" Linux rpi 3.1.9+ #168 PREEMPT Remote connected at gigabit, values for si between 30 and 55 %
90.8 + 91.4 0.3%us, 62.2%sy, 37.5%si Gentoo Linux ARM Linux genpi 3.2.23-bootc #1 Remote host connected at gigabit, vm.min_free_kbytes = 4096

 

 

 

路由

 

方法

 

  • 一台带两个lan口的OpenBSD 5.2电脑在不同域用两个lan口直接连接树莓派.
  • 在OpenBSD上的一个接口跑iperf -s, 另一个跑iperf -t 300 -c, 树莓派负责在中间路由.
  • iperf v2.0.5.
  • 测试150秒后树莓派系统负载.

 

结果

 

宽带 (Mbit/s) CPU使用率 (峰值) 发行版 内核 备注
50.2 Mbps 0.0%us, 0.1%sy, 99.8%si Debian Wheezy "Raspbian" Linux raspberrypi 3.6.11+ #366 PREEMPT Stock clock
85.5 Mbps 0.0%us, 2.8%sy, 69.7%si Debian Wheezy "Raspbian" Linux raspberrypi 3.6.11+ #366 PREEMPT Overclocked via raspi_config "turbo"
87.1 Mbps 4.3%us, 4.3%sy, 52.1%si Debian Wheezy "Raspbian" Linux raspberrypi 3.6.11+ #366 PREEMPT Overclocked arm_freq 1100 core_freq 500 sdram_freq 600 over_voltage 6
62.1 Mbps 0.0%us, 0.1%sy, 99.2%si Debian Wheezy "Raspbian" Linux raspberrypi 3.6.11+ #366 PREEMPT Overclocked arm_freq 1100 core_freq 500 sdram_freq 600 over_voltage 6 - SNAT enabled

 

电源

 

表格中列出了用5V电源线时同时执行各种任务所消耗电量.

 

进程 电量使用 (mA) 备注
启动 (无外设) 120-400 Taken from Agilent lab power supply readings. No composite/keyboard/mouse/network connected. HDMI was enabled but the cable was disconnected.
待机(HDMI开启,网络开启) 370 Taken from Agilent lab power supply readings. No composite/keyboard/mouse connected.
待机(HDMI开启,网络关闭) 320 Taken from Agilent lab power supply readings. No composite/keyboard/mouse/network connected.
播放1080p视频 750 About 3h on 4 AA batteries
编辑文本 - Same as idling
编译C代码(QuakeIII) 364 Measured with a Fluke 87V multimeter. No composite, keyboard, mouse, or network connected. HDMI was connected. Current peaked at 418mA.
运行Python程序 ?  
玩Quake III 461 Measured with a Fluke 87V multimeter. No composite or network connected. HDMI was connected. Current peaks at 551mA.

推荐阅读
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • 基于SSL的mysql服务器的主从架构实现说明:本文选用172.16.22.1作为主服务器,172.16.22.3作为从服务器从服务器的mysql软件版 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • linux下编译安装lnmp
    2019独角兽企业重金招聘Python工程师标准#######################安装依赖#####################安装必要的包:y ... [详细]
author-avatar
135369一生真爱_890
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有