网站首页 > 开源技术 正文
作为目前最火的语言,Java已经显得老态龙忠了,听到最多的抱怨就是臃肿,性能低,开发部署麻烦,甚至连脚本语言PHP都携swoole想趁机打一驾,真的是这样的吗?
其实真正做过Java开发的是不可能说出 Java开发部署麻烦这种话的,maven引入,Springboot一把梭,面向对象的语法虽然繁琐但是贴近口语话,开发是一件很轻松的事情了。那么剩下的就是性能问题了。
作为明星的Golang语言最近几年风头大胜,大有打尽天下无敌手的姿态,速度快,占用内存小的优点。在国内,使用最多的go语言web框架就是beego了,其地位相当于PHP界的ThinkPHP框架,国产,功能丰富,易用。但是Java没有对应的国产框架与之对应,就选最流行的Springboot吧。
基本代码
硬件配置 :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
可以看到RPS大约是65000多,CPU占用45%,测试完后内存占用达到1.5G后保持稳定
压测Beego
接下来我们来压测Beego,也是先预热一轮20秒,取第二轮120秒的成绩
可以看到,两轮压测后beego的RPS是45000多,CPU占用41%,内存13M
结论:
1.在默认配置下,springboot和beego的RPS没有显著差距,springboot略优于Beego框架。实际上在后面的测试中,当输出的内容更多时,springboot性能优势更明显。
2.beego的内存占用仅为13M,远小于springboot的1.5G,可见golang的内存优势确实非常明显。
3.两者在使用上成本差不多,都比较容易上手
4.本测试不够严谨,仅仅是抛砖引玉,粗窥门径。
猜你喜欢
- 2024-10-19 通过Mybatis Plus实现代码生成器,常见接口实现讲解
- 2024-10-19 Spring 太肥、太慢?你受不了?那 Solon Java Framework 就是你的西施
- 2024-10-19 ActFramework 1.8.32 发布 - 高质量的 Java Web 应用框架
- 2024-10-19 脱离 Spring 苦海,Solon v2.3.0 发布
- 2024-10-19 爱了!阿里巴巴内部出品“SpringBoot+微服务指南”,理论与实战
- 2024-10-19 国企项目就用国产的 Solon Java Framework,v2.5.12 发布
- 2024-10-19 sorms 1.0.10 发布,简易ORM框架(soar框架)
- 2024-10-19 对标 Spring Boot & Cloud,轻量框架 Solon 1.5.8 发布
- 2024-10-19 这三大Java编程码云送给你们,值得一看!
- 2024-10-19 Spring Boot教程第5篇:beatsql(spring boot bean)
你 发表评论:
欢迎- 最近发表
-
- 6月游戏推荐(二)(6月份新出的游戏)
- 37【源码】数据可视化:基于 Echarts + Python 动态实时大屏
- Kubernetes Kube-Proxy 组件 IPVS 模式工作原理及常用故障排查
- 《茶余饭后顶级英文歌曲精选》(茶余饭后的经典句子)
- rainx和MediaTek携手推出101产品生态,为5G FWA提供创新
- KAPITAL 推出蓝染风格 Aloha Shirt 系列
- 欧美经典怀旧歌曲Free loop-管不住的音符
- Mac 下php5.3-7.0的二进制包 ── PHP-OS
- 如何把一个Python应用程序装进Docker
- 为何推荐 JsonTree.js 做 JSON 可视化?
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)