【问题标题】:Do Spring Boot starter packages impact performance?Spring Boot 入门包会影响性能吗?
【发布时间】:2018-10-11 16:53:09
【问题描述】:

可以为spring boot gradle启动包,比如

org.springframework.boot:spring-boot-starter-web
org.springframework.boot:spring-boot-starter-cache

引入任何显着的延迟(>2ms api 响应时间)而不是非入门的特定包?通过依赖减速来显式和具体化性能会有什么显着提升吗?

另一个相关问题,假设一个启动包包含一个包/依赖项,我没有在服务中使用/实现(直接或间接),该包是否被加载或对服务性能有任何影响?

【问题讨论】:

  • 我不知道为什么 gradle 标签被删除 - 第二个问题与 gradle 的工作方式有关。

标签: spring spring-boot spring-boot-starter


【解决方案1】:

引入任何显着的延迟(>2ms api 响应时间)而不是非入门的特定包?

通常,拉入包可以在运行时引入任意内容,并任意更改响应时间。对于入门包与非入门包都是如此。入门包通常被设计为将事物“连接”到您的应用程序上下文中,因此它们更有可能这样做。话虽如此,spring boot 被设计为生产就绪,因此根据我的经验,发布的 spring 提供的启动包(与 SNAPSHOT 构建或来自一些随机 github 存储库的东西相反)是可靠的。

通过依赖减速来显式和具体地提高性能是否会显着提高?

也许,但我认为这不太可能。我强烈认为通过开发复杂性来解决性能问题并不是最有效的方法,购买更多/更大的硬件要便宜得多。有很多分析可以支持这一点(谷歌“过早优化”)。

另一个相关问题,假设一个启动包包含一个包/依赖项,我没有在服务中使用/实现(直接或间接),该包是否被加载或对服务性能有任何影响?

java 中的类加载是一个有点复杂的话题。这是一篇不错的文章。 https://zeroturnaround.com/rebellabs/rebel-labs-tutorial-do-you-really-get-classloaders/2/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2012-02-04
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    相关资源
    最近更新 更多