spring - Spring Boot 入门包会影响性能吗?
问题描述
可以为spring boot gradle启动包,比如
org.springframework.boot:spring-boot-starter-web
org.springframework.boot:spring-boot-starter-cache
引入任何显着的延迟(> 2ms api 响应时间)而不是非入门的特定包?依赖减速是否会显着提高性能?
另一个相关问题,假设一个启动包包含一个包/依赖项,我没有在服务中使用/实现(直接或间接),该包是否被加载或对服务性能有任何影响?
解决方案
引入任何显着的延迟(> 2ms api 响应时间)而不是非入门的特定包?
通常,拉入包可以在运行时引入任意内容,并任意更改响应时间。对于入门包与非入门包都是如此。入门包通常被设计为将事物“连接”到您的应用程序上下文中,因此它们更有可能这样做。话虽如此,spring boot 被设计为生产就绪,因此根据我的经验,发布的 spring 提供的启动包(与 SNAPSHOT 构建或来自一些随机 github repo 的东西相反)是可靠的。
依赖减速是否会显着提高性能?
也许吧,但我认为这不太可能。我强烈认为通过开发复杂性来解决性能问题并不是最有效的方法,购买更多/更大的硬件要便宜得多。有很多分析可以支持这一点(谷歌“过早优化”)。
另一个相关问题,假设一个启动包包含一个包/依赖项,我没有在服务中使用/实现(直接或间接),该包是否被加载或对服务性能有任何影响?
java 中的类加载是一个有点复杂的话题。这是一篇不错的文章。https://zeroturnaround.com/rebellabs/rebel-labs-tutorial-do-you-really-get-classloaders/2/
推荐阅读
- javascript - 如何检查对象数组中的缺失值并使用特殊字符添加缺失值
- java - 如何避免在火花数据集中重新计算?
- scala - Tapir 无法使用“DecodingFailure(CNil, List(DownArray))”解码密封特征列表
- vue.js - 可以使用 vue 路由为每条路由(后缀)提供唯一的 id
- cppcheck - --clang= 有什么用
和 --addon-python= 在 cppcheck 中? - java - 使用 bouncycastle-java 和 RSAES-OAEP 进行加密/解密
- python - 在这些保存的 Matplotlib 图中,可能导致颜色条刻度标签出现这种拖尾/失真的原因是什么?
- flutter - Hive Flutter,如何以反向键顺序获取值
- vue.js - Vue模块组件检测Vue.js版本?
- azure-iot-hub - 文档中的设备孪生属性命名约定与 Python SDK 相矛盾