JEE与Spring Boot代码性能比较分析
JavaEE与Spring Boot其实很难比较测试,前者适合单体SOA架构,后者适合微服务,但是还是有好事者把两者放在一起比较性能。
我把一些JEE和Spring代码放在一起做了同样的事情。Spring做了一些开箱即用的好东西,所以我在一些JEE示例中复制了它以提高性能。
测试环境:IBM JRE 8.0.5.22、IBM Liberty 18.0.0.3 App Server、底层使用Ubuntu Linux 18.04.1 LTS和MySQL 5.7.24以及MySQL 8.0.13 JDBC驱动程序。
硬件:采用AMD 2700x Ryzen处理器,在2600 GHz频率下具有32 GB内存。
实际结果:
- Spring可以节省一些编码时间
- Spring通常会为性能做出很好的选择,但是加入到JEE应用程序时,这些优势就会消失。
- Spring执行save()或findAll()之类方法时不履行@Transactional,Spring会更改隔离级别和事务传播。这使得Spring在执行非更新数据库的功能时具有优势,但是IMO,Spring应该真正尊重设置的隔离级别和传播。当改变JEE中的方法的隔离级别和传播时,JEE会更快。
简单REST调用 Liberty perfRESTJEE 3631 ms Liberty perfRESTSpring 2909 ms SpringBoot perfRESTSpring 3064 ms REST with JPA Liberty perfRESTJPAJEE 65531 ms Liberty perfRESTJPASpring 37076 ms SpringBoot perfRESTJPASpring 37757 ms REST with JPA (EclipseLink) Liberty perfRESTJPASpring-EL 37709 ms SpringBoot perfRESTJPASpring-EL 76791 ms
总结
以上所述是小编给大家介绍的JEE与Spring Boot代码性能比较,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
相关推荐
-
浅谈Spring Boot Web 应用性能优化
默认情况下,Spring Boot Web 应用会装配一些功能组件 Bean. 在大多数 Web 应用场景下,可以选择性地关闭一下自动装配的Spring 组件 Bean,以达到提升性能的目的. 配置项优化 Spring Boot Web 应用加速 完整配置项 management.add-application-context-header = false spring.mvc.formcontent.putfilter.enabled = false spring.autoconfigure.
-
JEE与Spring Boot代码性能比较分析
JavaEE与Spring Boot其实很难比较测试,前者适合单体SOA架构,后者适合微服务,但是还是有好事者把两者放在一起比较性能. 我把一些JEE和Spring代码放在一起做了同样的事情.Spring做了一些开箱即用的好东西,所以我在一些JEE示例中复制了它以提高性能. 测试环境:IBM JRE 8.0.5.22.IBM Liberty 18.0.0.3 App Server.底层使用Ubuntu Linux 18.04.1 LTS和MySQL 5.7.24以及MySQL 8.0.13 JD
-
Docker环境下Spring Boot应用内存飙升分析与解决场景分析
目录 Spring Boot应用内存飙升 服务现状 JVM默认内存设置 优化 限制JVM内存 参数解释 JVM常见参数 java.security.egd 作用 优化后的Dockerfile文件 优化后的效果 JVM参数设置是否生效 基础镜像优化 OpenJ9 GraalVM Fabric8 优化后的Dockerfile文件 优化后的效果 备注 Xmx < limit 支持springboot多环境和jvm动态配置的Dockerfile 参考 Spring Boot应用内存飙升 一个简单的Spr
-
Spring Boot 发送邮件功能案例分析
邮件服务简介 邮件服务在互联网早期就已经出现,如今已成为人们互联网生活中必不可少的一项服务.那么邮件服务是怎么工作的呢?如下给出邮件发送与接收的典型过程: 1.发件人使用SMTP协议传输邮件到邮件服务器A: 2.邮件服务器A根据邮件中指定的接收者,投送邮件至相应的邮件服务器B: 3.收件人使用POP3协议从邮件服务器B接收邮件. SMTP(Simple Mail Transfer Protocol)是电子邮件(email)传输的互联网标准,定义在RFC5321,默认使用端口25: POP3(Po
-
详解spring boot应用启动原理分析
前言 本文分析的是spring boot 1.3. 的工作原理.spring boot 1.4. 之后打包结构发现了变化,增加了BOOT-INF目录,但是基本原理还是不变的. 关于spring boot 1.4.* 里ClassLoader的变化,可以参考://www.jb51.net/article/141479.htm spring boot quick start 在spring boot里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启动
-
Spring Boot 2.2 正式发布,大幅性能提升 + Java 13 支持
之前 Spring Boot 2.2没能按时发布,是由于 Spring Framework 5.2 的发布受阻而推迟.这次随着 Spring Framework 5.2.0 成功发布之后,Spring Boot 2.2 也紧跟其后,发布了第一个版本:2.2.0.下面就来一起来看看这个版本都更新了些什么值得我们关注的内容. 组件版本更新 这些Spring框架组件更新了依赖版本: Spring AMQP 2.2 Spring Batch 4.2 Spring Data Moore Spring Fr
-
spring boot jar的启动原理解析
1.前言 近来有空对公司的open api平台进行了些优化,然后在打出jar包的时候,突然想到以前都是对spring boot使用很熟练,但是从来都不知道spring boot打出的jar的启动原理,然后这回将jar解开了看了下,与想象中确实大不一样,以下就是对解压出来的jar的完整分析. 2.jar的结构 spring boot的应用程序就不贴出来了,一个较简单的demo打出的结构都是类似,另外我采用的spring boot的版本为1.4.1.RELEASE网上有另外一篇文章对spring
-
深入Spring Boot之ClassLoader的继承关系和影响
前言 对spring boot本身启动原理的分析,请参考://www.jb51.net/article/141478.htm Spring boot里的ClassLoader继承关系 可以运行下面提供的demo,分别在不同的场景下运行,可以知道不同场景下的Spring boot应用的ClassLoader继承关系. https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-classloader-context 分三种情况
-
.NET程序员如何入门Spring Boot详解
前言 本篇文章将教你作为一个.NET程序员如何快入门Spring Boot.你不需要用Eclipse,也不需要用IDEA.已经习惯了VS,其他的IDE-- 但不得不说VS Code很厉害,一用就喜欢.微软给VS Code提供了编写Java的插件,你可以在VS Code上愉快地写Java. 一.环境搭建 (1) 安装Java.配置环境变量.(教程很多,这里不多说) (2) 安装Maven和配置.参考https://www.cnblogs.com/eagle6688/p/7838224.html (
-
如何将JSP/Servlet项目转换为Spring Boot项目
创建Spring Boot应用 在基于Spring来重构JSP应用之前,我们先引入Spring Boot,使之成为一个Spring Boot应用.你只需要在原来的代码基础上,增加简单的配置和少量的代码即可引入Spring Boot,整个过程5分钟就能完成. 这里我们使用Maven来管理依赖,因为我们需要增加Spring Boot相关的依赖.也可以在Eclipse或者IntelliJ中创建一个新的Maven项目. 在POM文件中加入Spring Boot相关的配置. <parent> <g
-
Java Spring Boot消息服务万字详解分析
目录 消息服务概述 为什么要使用消息服务 异步处理 应用解耦 流量削峰 分布式事务管理 常用消息中间件介绍 ActiveMQ RabbitMQ RocketMQ RabbitMQ消息中间件 RabbitMQ简介 RabbitMQ工作模式介绍 Work queues(工作队列模式) Public/Subscribe(发布订阅模式) Routing(路由模式) Topics(通配符模式) RPC Headers RabbitMQ安装以及整合环境搭建 安装RabbitMQ 下载RabbitMQ 安装R
随机推荐
- AngularJS基础学习笔记之表达式
- 以MVC的思维方式来理解Ruby on Rails框架的设计结构
- 使用JavaMail发送邮件保证成功的方法
- jsp搜索引擎
- js判断图片加载完成后获取图片实际宽高的方法
- C# 文件上传 默认最大为4M的解决方法
- PHP页面输出时js设置input框的选中值
- 浅析mysql索引
- windows下如何安装和启动MySQL
- Docker的理解和基本命令详解
- JS获取月份最后天数、最大天数与某日周数的方法
- 微信企业号开发之微信考勤百度地图定位
- ASP Crazy 模版操作类(最简单的模板类、仅提供交流)
- Javascript Select操作大集合
- CentOS 6.7下nginx SSL证书部署的方法
- python3实现抓取网页资源的 N 种方法
- 用innerhtml提高页面打开速度的方法
- 地址栏上的一段语句,改变页面的风格。(教程)
- 初学JS的的小例子 javascript replace高亮替换
- javascript 开发之百度地图使用到的js函数整理