您的位置 首页 golang

beego Vs Springboot,Java与Golang的性能对决,谁能赢?

作为目前最火的语言, Java 已经显得老态龙忠了,听到最多的抱怨就是臃肿,性能低,开发部署麻烦,甚至连脚本语言PHP都携swoole想趁机打一驾,真的是这样的吗?

其实真正做过Java开发的是不可能说出 Java开发部署麻烦这种话的,maven引入,Springboot一把梭,面向对象的语法虽然繁琐但是贴近口语话,开发是一件很轻松的事情了。那么剩下的就是性能问题了。

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

beego Vs Springboot,Java与Golang的性能对决,谁能赢?

PK

基本代码

硬件配置 :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: false
beetl-beetlsql:
 dev: false
beetl:
 suffix: html
 delimiter-statement-start: '<!--:'
 delimiter-statement-end: '-->'
 resource-tagsuffix: tag
 resource-auto-check: false #是否检测文件变化,开发用true合适,但线上要改为false
beetlsql:
 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 类
 */@RestController
public class HelloWorldController {
 protected Logger log = LoggerFactory.getLogger(this.getClass());
 @RequestMapping("/")
 String home() {
 //log.info("index...");
 return "Greetings from Spring Boot!";
 }
}
 

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

beego使用官方的默认项目,控制器代码

package controllers
import (
 "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

 
beego Vs Springboot,Java与Golang的性能对决,谁能赢?

springboot压测

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

beego Vs Springboot,Java与Golang的性能对决,谁能赢?

java springbbot压测CPU

压测Beego

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

beego Vs Springboot,Java与Golang的性能对决,谁能赢?

beego压测

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

beego Vs Springboot,Java与Golang的性能对决,谁能赢?

压测beego

结论:

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

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

3.两者在使用上成本差不多,都比较容易上手

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

文章来源:智云一二三科技

文章标题:beego Vs Springboot,Java与Golang的性能对决,谁能赢?

文章地址:https://www.zhihuclub.com/98113.shtml

关于作者: 智云科技

热门文章

评论已关闭

2条评论

  1. Oh and I have PCOS, though mild as I do ovulate on my own, but sometimes my cycles can vary in length so even though we re pretty sure I do O each cycle, having no idea when to expect it is why I was put on the clomid and keeps my cycles at a managable 30 days, versus anywhere from 30- 45 days in length lol Researchers found that while only 30 of oncologists felt sufficiently informed to make recommendations regarding medical marijuana, nearly 80 conducted discussions about the treatment and 46 recommended it clinically

网站地图