首页 » PHP教程 » beego与php技巧_beego Vs SpringbootJava与Golang的机能对决谁能赢

beego与php技巧_beego Vs SpringbootJava与Golang的机能对决谁能赢

访客 2024-11-29 0

扫一扫用手机浏览

文章目录 [+]

实在真正做过Java开拓的是不可能说出 Java开拓支配麻烦这种话的,maven引入,Springboot一把梭,面向工具的语法虽然繁琐但是贴近口语话,开拓是一件很轻松的事情了。
那么剩下的便是性能问题了。

作为明星的Golang措辞最近几年风头大胜,大有打尽天下无敌手的姿态,速率快,占用内存小的优点。
在海内,利用最多的go措辞web框架便是beego了,其地位相称于PHP界的ThinkPHP框架,国产,功能丰富,易用。
但是Java没有对应的国产框架与之对应,就选最盛行的Springboot吧。

beego与php技巧_beego Vs SpringbootJava与Golang的机能对决谁能赢

PK

beego与php技巧_beego Vs SpringbootJava与Golang的机能对决谁能赢
(图片来自网络侵删)
基本代码

硬件配置 :Thinkpad E480,4核8线程 i5-8 CPU,16G内存,SSD

先来看下SpringBoot的配置

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> <exclusion> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </dependency> <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl-framework-starter</artifactId> <version>${beetl.version}</version> </dependency> </dependencies>

application.yml配置文件如下

# 开拓环境配置server: # 做事端口 port: 8080 servlet: # 项目contextPath context-path: / error: whitelabel: enabled: true undertow: worker-threads: 8 io-threads: 4 #设置IO线程数, 它紧张实行非壅塞的任务,它会卖力多个连接,默认取CPU核心数量 max-http-post-size: 50000000 buffer-size: 512 accesslog: enabled: falsebeetl-beetlsql: dev: falsebeetl: suffix: html delimiter-statement-start: '<!--:' delimiter-statement-end: '--\>' resource-tagsuffix: tag resource-auto-check: false #是否检测文件变革,开拓用true得当,但线上要改为falsebeetlsql: basePackage: spx

基本都是默认配置

这里只引入了server容器和一个叫beetl的模板引擎,其掌握器代码如下:

import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/ spring boot 类 /@RestControllerpublic class HelloWorldController { protected Logger log = LoggerFactory.getLogger(this.getClass()); @RequestMapping(\公众/\"大众) String home() { //log.info(\"大众index...\"大众); return \公众Greetings from Spring Boot!\"大众; }}

只打印一句话,并输出到页面。

beego利用官方的默认项目,掌握器代码

package controllersimport ( \公众github.com/astaxie/beego\"大众)type MainController struct { beego.Controller}func (c MainController) Get() { c.Ctx.WriteString(\公众Greetings from Golang BeeGo\"大众)}压测Springboot

下面来压测下Springboot的性能,先预热一轮20秒,取第二轮120秒的成绩。

Springboot的启动未带任何JVM参数,未作其他优化,jinfo查看默认参数是

VM Flags:Non-default VM flags: -XX:CICompilerCount=4 -XX:InitialHeapSize=262144000 -XX:MaxHeapSize=4177526784 -XX:MaxNewSize=1392508928 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=87031808 -XX:OldSize=175112192 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC

springboot压测

可以看到RPS大约是65000多,CPU占用45%,测试完后内存占用达到1.5G后保持稳定

java springbbot压测CPU

压测Beego

接下来我们来压测Beego,也是先预热一轮20秒,取第二轮120秒的成绩

beego压测

可以看到,两轮压测后beego的RPS是45000多,CPU占用41%,内存13M

压测beego

结论:

1.在默认配置下,springboot和beego的RPS没有显著差距,springboot略优于Beego框架。
实际上在后面的测试中,当输出的内容更多时,springboot性能上风更明显。

2.beego的内存占用仅为13M,远小于springboot的1.5G,可见golang的内存上风确实非常明显。

3.两者在利用上本钱差不多,都比较随意马虎上手

4.本测试不足严谨,仅仅是抛砖引玉,粗窥门径。

标签:

相关文章