Performance Test
Spring Boot v3.3.4
Preamble
For this test we'll focus on the org.springframework package and we are using openjdk version "21.0.8" 2025-07-15 on Linux
Test Class
We are using the following code to test throughput latencies using the stress test tool ab with 10 threads and a total of 1000 GET requests that return a 200 page with "Hello, World". More
complicated annotation beans could be tested but for now we'll stick to core vanilla.
ab -n 1000 -c 10 http://localhost:8080/
The command line with problematic packages omitted is:
java -javaagent:TopJ.jar=3,100,'^(?=.*springframework)(?!.*(ConcurrentReferenceHashMap|java.util.|org\.springframework\.core\.env\.SystemEnvironmentPropertySource|org\.springframework.core\.env\.MapPropertySource|org\.springframework\.core\.MethodParameter|org\.springframework\.util\.LinkedMultiValueMap|BeanPostProcessor|org\.springframework\.boot\.util\.LambdaSafe)).*$',err -jar spring-boot-0.0.1-SNAPSHOT.jar
Results
This is the situation after all 1000 requests have been processed (cut at 0.05ms min avg for brevity):
[TopJ] Top 2000 Method Timing Stats for 20 Threads (sorted by avg time)
[TopJ] org.springframework.boot.loader.launch.JarLauncher.main: max=38.00 ms, total=38.00 ms, avg=38.00 ms, calls=1
[TopJ] org.springframework.boot.loader.launch.JarFileArchive.getClassPathUrls: max=28.33 ms, total=28.33 ms, avg=28.33 ms, calls=1
[TopJ] org.springframework.boot.loader.launch.Archive.create: max=59.52 ms, total=60.09 ms, avg=20.03 ms, calls=3
[TopJ] org.springframework.boot.logging.logback.LogbackLoggingSystem.isJulUsingASingleConsoleHandlerAtMost: max=13.88 ms, total=13.88 ms, avg=13.88 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$TaskSchedulerBuilderConfiguration.taskSchedulerBuilder: max=10.30 ms, total=10.30 ms, avg=10.30 ms, calls=1
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors: max=9.98 ms, total=9.98 ms, avg=9.98 ms, calls=1
[TopJ] org.springframework.boot.ansi.AnsiOutput.detectIfAnsiCapable: max=8.71 ms, total=8.71 ms, avg=8.71 ms, calls=1
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatWebServer.startNonDaemonAwaitThread: max=7.24 ms, total=7.24 ms, avg=7.24 ms, calls=1
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.beanNameHandlerMapping: max=5.12 ms, total=5.12 ms, avg=5.12 ms, calls=1
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.createExceptionHandlerExceptionResolver: max=4.29 ms, total=4.29 ms, avg=4.29 ms, calls=1
[TopJ] org.springframework.cglib.core.SpringNamingPolicy.getClassName: max=3.77 ms, total=3.77 ms, avg=3.77 ms, calls=1
[TopJ] org.springframework.boot.loader.net.protocol.jar.Handler.assertInnerUrlIsNotMalformed: max=112.63 ms, total=112.72 ms, avg=3.22 ms, calls=35
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.createRequestMappingHandlerMapping: max=3.14 ms, total=3.14 ms, avg=3.14 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration.welcomePageNotAcceptableHandlerMapping: max=2.79 ms, total=2.79 ms, avg=2.79 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.defaultViewResolver: max=2.68 ms, total=2.68 ms, avg=2.68 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration.characterEncodingFilter: max=2.36 ms, total=2.36 ms, avg=2.36 ms, calls=1
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.routerFunctionMapping: max=2.36 ms, total=2.36 ms, avg=2.36 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.requestContextFilter: max=2.31 ms, total=2.31 ms, avg=2.31 ms, calls=1
[TopJ] org.springframework.boot.loader.launch.Launcher.createClassLoader: max=4.55 ms, total=4.60 ms, avg=2.30 ms, calls=2
[TopJ] org.springframework.boot.ClearCachesApplicationListener.clearClassLoaderCaches: max=9.00 ms, total=9.12 ms, avg=2.28 ms, calls=4
[TopJ] org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.beanNameViewResolver: max=2.11 ms, total=2.11 ms, avg=2.11 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration.jsonComponentModule: max=1.92 ms, total=1.92 ms, avg=1.92 ms, calls=1
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatWebServer.getContextPath: max=1.89 ms, total=1.89 ms, avg=1.89 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration.basicErrorController: max=1.85 ms, total=1.85 ms, avg=1.85 ms, calls=1
[TopJ] org.springframework.boot.loader.launch.ExecutableArchiveLauncher.getClassPathUrls: max=1.79 ms, total=1.79 ms, avg=1.79 ms, calls=1
[TopJ] org.springframework.boot.logging.logback.LogbackLoggingSystem.getSystemProperties: max=1.67 ms, total=1.67 ms, avg=1.67 ms, calls=1
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.createRequestMappingHandlerAdapter: max=1.58 ms, total=1.58 ms, avg=1.58 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonMixinConfiguration.jsonMixinModule: max=1.53 ms, total=1.53 ms, avg=1.53 ms, calls=1
[TopJ] org.springframework.scheduling.concurrent.ExecutorConfigurationSupport.initialize: max=1.49 ms, total=1.49 ms, avg=1.49 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration.defaultLifecycleProcessor: max=1.45 ms, total=1.45 ms, avg=1.45 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration.applicationAvailability: max=1.41 ms, total=1.41 ms, avg=1.41 ms, calls=1
[TopJ] org.springframework.boot.logging.logback.LogbackLoggingSystem$Factory.getLoggingSystem: max=1.39 ms, total=1.39 ms, avg=1.39 ms, calls=1
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.getConfigurableWebBindingInitializer: max=1.28 ms, total=1.28 ms, avg=1.28 ms, calls=1
[TopJ] org.springframework.boot.context.event.EventPublishingRunListener.starting: max=1.17 ms, total=1.17 ms, avg=1.17 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration.errorAttributes: max=1.16 ms, total=1.16 ms, avg=1.16 ms, calls=1
[TopJ] org.springframework.jndi.JndiLocatorDelegate.isDefaultJndiEnvironmentAvailable: max=2.26 ms, total=2.30 ms, avg=1.15 ms, calls=2
[TopJ] org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration.formContentFilter: max=1.13 ms, total=1.13 ms, avg=1.13 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration.standardJacksonObjectMapperBuilderCustomizer: max=1.12 ms, total=1.12 ms, avg=1.12 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration.tomcatWebServerFactoryCustomizer: max=1.06 ms, total=1.06 ms, avg=1.06 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.viewResolver: max=1.03 ms, total=1.03 ms, avg=1.03 ms, calls=1
[TopJ] org.springframework.boot.SpringApplicationRunListeners.starting: max=1.03 ms, total=1.03 ms, avg=1.03 ms, calls=1
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatWebServer.doWithConnectors: max=1.97 ms, total=2.02 ms, avg=1.01 ms, calls=2
[TopJ] org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration$StandardJackson2ObjectMapperBuilderCustomizer.configureVisibility: max=1.01 ms, total=1.01 ms, avg=1.01 ms, calls=1
[TopJ] org.springframework.boot.DefaultApplicationContextFactory.create: max=1.00 ms, total=1.00 ms, avg=1.00 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration.builder: max=1.00 ms, total=1.00 ms, avg=1.00 ms, calls=1
[TopJ] org.springframework.core.type.classreading.CachingMetadataReaderFactory.setCacheLimit: max=1.99 ms, total=1.99 ms, avg=1.00 ms, calls=2
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.mvcContentNegotiationManager: max=0.98 ms, total=0.98 ms, avg=0.98 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration.httpMessageConvertersRestClientCustomizer: max=0.97 ms, total=0.97 ms, avg=0.97 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration.sslBundleRegistry: max=0.91 ms, total=0.91 ms, avg=0.91 ms, calls=1
[TopJ] org.springframework.boot.task.TaskSchedulerBuilder.append: max=0.91 ms, total=0.91 ms, avg=0.91 ms, calls=1
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedContext.createWrapper: max=0.88 ms, total=0.88 ms, avg=0.88 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration.builder: max=0.88 ms, total=0.88 ms, avg=0.88 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration.dispatcherServletRegistration: max=0.87 ms, total=0.87 ms, avg=0.87 ms, calls=1
[TopJ] org.springframework.cglib.core.MethodWrapper$MethodWrapperKey.equals: max=0.87 ms, total=0.87 ms, avg=0.87 ms, calls=1
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.mvcResourceUrlProvider: max=0.86 ms, total=0.86 ms, avg=0.86 ms, calls=1
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.mvcViewResolver: max=0.84 ms, total=0.84 ms, avg=0.84 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration.messageConverters: max=0.83 ms, total=0.83 ms, avg=0.83 ms, calls=1
[TopJ] org.springframework.boot.SpringApplication.findMainClass: max=0.82 ms, total=0.82 ms, avg=0.82 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration.conventionErrorViewResolver: max=0.79 ms, total=0.79 ms, avg=0.79 ms, calls=1
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.httpRequestHandlerAdapter: max=0.78 ms, total=0.78 ms, avg=0.78 ms, calls=1
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedContext.getLoadOnStartupWrappers: max=0.76 ms, total=0.76 ms, avg=0.76 ms, calls=1
[TopJ] org.springframework.boot.context.logging.LoggingApplicationListener.getLogLevelConfigurer: max=0.75 ms, total=0.75 ms, avg=0.75 ms, calls=1
[TopJ] org.springframework.boot.loader.zip.ZipContent$Loader.loadContent: max=23.11 ms, total=23.16 ms, avg=0.75 ms, calls=31
[TopJ] org.springframework.context.annotation.ConfigurationClassEnhancer$BeanFactoryAwareGeneratorStrategy.transform: max=1.48 ms, total=1.48 ms, avg=0.74 ms, calls=2
[TopJ] org.springframework.boot.loader.net.protocol.nested.Handler.assertUrlIsNotMalformed: max=25.68 ms, total=25.80 ms, avg=0.74 ms, calls=35
[TopJ] org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup.selectImports: max=0.70 ms, total=0.70 ms, avg=0.70 ms, calls=1
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup: max=0.69 ms, total=0.69 ms, avg=0.69 ms, calls=1
[TopJ] org.springframework.boot.origin.OriginTrackedValue.of: max=0.69 ms, total=0.69 ms, avg=0.69 ms, calls=1
[TopJ] org.springframework.core.annotation.AnnotatedMethod.initMethodParameters: max=4.67 ms, total=4.71 ms, avg=0.67 ms, calls=7
[TopJ] org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration.sslPropertiesSslBundleRegistrar: max=0.66 ms, total=0.66 ms, avg=0.66 ms, calls=1
[TopJ] org.springframework.core.io.support.SpringFactoriesLoader$FailureHandler.handleMessage: max=0.66 ms, total=0.66 ms, avg=0.66 ms, calls=1
[TopJ] org.springframework.beans.CachedIntrospectionResults.clearClassLoader: max=0.66 ms, total=0.66 ms, avg=0.66 ms, calls=1
[TopJ] org.springframework.boot.DefaultApplicationContextFactory.createEnvironment: max=0.65 ms, total=0.65 ms, avg=0.65 ms, calls=1
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.handlerFunctionAdapter: max=0.65 ms, total=0.65 ms, avg=0.65 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.TomcatServletWebServerFactoryCustomizer.customizeRedirectContextRoot: max=0.64 ms, total=0.64 ms, avg=0.64 ms, calls=1
[TopJ] org.springframework.boot.logging.LoggerGroups.putAll: max=0.63 ms, total=0.63 ms, avg=0.63 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration.restClientSsl: max=0.62 ms, total=0.62 ms, avg=0.62 ms, calls=1
[TopJ] org.springframework.cglib.core.ClassNameReader.getClassInfo: max=0.62 ms, total=0.62 ms, avg=0.62 ms, calls=1
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer: max=0.61 ms, total=0.61 ms, avg=0.61 ms, calls=1
[TopJ] org.springframework.boot.system.ApplicationHome.isUnitTest: max=0.61 ms, total=0.61 ms, avg=0.61 ms, calls=1
[TopJ] org.springframework.boot.context.event.EventPublishingRunListener.ready: max=0.60 ms, total=0.60 ms, avg=0.60 ms, calls=1
[TopJ] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext$ExistingWebApplicationScopes.restore: max=0.59 ms, total=0.59 ms, avg=0.59 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat.tomcatServletWebServerFactory: max=0.59 ms, total=0.59 ms, avg=0.59 ms, calls=1
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.viewControllerHandlerMapping: max=0.58 ms, total=0.58 ms, avg=0.58 ms, calls=1
[TopJ] org.springframework.boot.DefaultApplicationContextFactory.getEnvironmentType: max=0.58 ms, total=0.58 ms, avg=0.58 ms, calls=1
[TopJ] org.springframework.boot.context.config.ConfigDataEnvironmentContributors.getBinder: max=2.81 ms, total=2.86 ms, avg=0.57 ms, calls=5
[TopJ] org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration.fileWatcher: max=0.56 ms, total=0.56 ms, avg=0.56 ms, calls=1
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.mvcUriComponentsContributor: max=0.56 ms, total=0.56 ms, avg=0.56 ms, calls=1
[TopJ] org.springframework.boot.context.config.StandardConfigDataLocationResolver.validateConfigName: max=0.55 ms, total=0.55 ms, avg=0.55 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration.tomcatServletWebServerFactoryCustomizer: max=0.55 ms, total=0.55 ms, avg=0.55 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration.servletWebServerFactoryCustomizer: max=0.54 ms, total=0.54 ms, avg=0.54 ms, calls=1
[TopJ] org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertyResolver.validateRequiredProperties: max=0.54 ms, total=0.54 ms, avg=0.54 ms, calls=1
[TopJ] org.springframework.boot.SpringApplicationRunListeners.contextLoaded: max=0.52 ms, total=0.52 ms, avg=0.52 ms, calls=1
[TopJ] org.springframework.cglib.core.EmitUtils.getSwitchKeys: max=0.52 ms, total=0.52 ms, avg=0.52 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer.joinCharacters: max=1.01 ms, total=1.03 ms, avg=0.52 ms, calls=2
[TopJ] org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration.websocketServletWebServerCustomizer: max=0.51 ms, total=0.51 ms, avg=0.51 ms, calls=1
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.simpleControllerHandlerAdapter: max=0.51 ms, total=0.51 ms, avg=0.51 ms, calls=1
[TopJ] org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.initBeanFactory: max=0.50 ms, total=0.50 ms, avg=0.50 ms, calls=1
[TopJ] org.springframework.boot.task.ThreadPoolTaskExecutorBuilder.build: max=0.50 ms, total=0.50 ms, avg=0.50 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration.restClientBuilderConfigurer: max=0.48 ms, total=0.48 ms, avg=0.48 ms, calls=1
[TopJ] org.springframework.web.accept.ContentNegotiationManagerFactoryBean.addMediaTypes: max=0.47 ms, total=0.47 ms, avg=0.47 ms, calls=1
[TopJ] org.springframework.boot.task.TaskExecutorBuilder.append: max=0.47 ms, total=0.47 ms, avg=0.47 ms, calls=1
[TopJ] org.springframework.boot.jackson.JsonMixinModuleEntries.create: max=0.47 ms, total=0.47 ms, avg=0.47 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.condition.ConditionEvaluationReport.getConditionAndOutcomesBySource: max=0.46 ms, total=0.46 ms, avg=0.46 ms, calls=1
[TopJ] org.springframework.boot.jackson.JsonMixinModule.registerEntries: max=0.46 ms, total=0.46 ms, avg=0.46 ms, calls=1
[TopJ] org.springframework.web.servlet.config.annotation.InterceptorRegistry.getInterceptors: max=0.45 ms, total=0.45 ms, avg=0.45 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.websocket.servlet.TomcatWebSocketServletWebServerCustomizer.customize: max=0.45 ms, total=0.45 ms, avg=0.45 ms, calls=1
[TopJ] org.springframework.boot.logging.logback.LogbackLoggingSystem.getShutdownHandler: max=0.45 ms, total=0.45 ms, avg=0.45 ms, calls=1
[TopJ] org.springframework.boot.SpringApplicationRunListeners.contextPrepared: max=0.45 ms, total=0.45 ms, avg=0.45 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration.localeCharsetMappingsCustomizer: max=0.44 ms, total=0.44 ms, avg=0.44 ms, calls=1
[TopJ] org.springframework.boot.context.event.EventPublishingRunListener.contextPrepared: max=0.43 ms, total=0.43 ms, avg=0.43 ms, calls=1
[TopJ] org.springframework.boot.task.SimpleAsyncTaskExecutorBuilder.append: max=0.42 ms, total=0.42 ms, avg=0.42 ms, calls=1
[TopJ] org.springframework.boot.cloud.CloudPlatform$7.isDetected: max=0.82 ms, total=0.85 ms, avg=0.42 ms, calls=2
[TopJ] org.springframework.boot.SpringApplicationRunListeners.ready: max=0.42 ms, total=0.42 ms, avg=0.42 ms, calls=1
[TopJ] org.springframework.boot.SpringApplicationRunListeners.environmentPrepared: max=0.41 ms, total=0.41 ms, avg=0.41 ms, calls=1
[TopJ] org.springframework.boot.DefaultBootstrapContext.close: max=0.41 ms, total=0.41 ms, avg=0.41 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup.process: max=0.41 ms, total=0.41 ms, avg=0.41 ms, calls=1
[TopJ] org.springframework.beans.factory.support.DefaultListableBeanFactory$DependencyObjectProvider.getIfAvailable: max=1.19 ms, total=1.20 ms, avg=0.40 ms, calls=3
[TopJ] org.springframework.boot.context.properties.bind.DefaultBindConstructorProvider$Constructors.isAutowiredPresent: max=0.98 ms, total=5.60 ms, avg=0.40 ms, calls=14
[TopJ] org.springframework.boot.task.SimpleAsyncTaskSchedulerBuilder.append: max=0.40 ms, total=0.40 ms, avg=0.40 ms, calls=1
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatWebServer.removeServiceConnectors: max=0.39 ms, total=0.39 ms, avg=0.39 ms, calls=1
[TopJ] org.springframework.boot.context.event.EventPublishingRunListener.started: max=0.39 ms, total=0.39 ms, avg=0.39 ms, calls=1
[TopJ] org.springframework.boot.loader.net.protocol.jar.JarUrl.getJarReference: max=9.47 ms, total=11.96 ms, avg=0.39 ms, calls=31
[TopJ] org.springframework.beans.factory.InjectionPoint.toString: max=0.38 ms, total=0.38 ms, avg=0.38 ms, calls=1
[TopJ] org.springframework.boot.SpringApplication.quoteProfiles: max=0.43 ms, total=0.76 ms, avg=0.38 ms, calls=2
[TopJ] org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$ErrorPageCustomizer.registerErrorPages: max=0.37 ms, total=0.37 ms, avg=0.37 ms, calls=1
[TopJ] org.springframework.web.accept.MappingMediaTypeFileExtensionResolver.addFileExtension: max=0.37 ms, total=0.37 ms, avg=0.37 ms, calls=1
[TopJ] org.springframework.boot.SpringApplicationRunListeners.started: max=0.37 ms, total=0.37 ms, avg=0.37 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration.multipartResolver: max=0.37 ms, total=0.37 ms, avg=0.37 ms, calls=1
[TopJ] org.springframework.boot.jackson.JsonMixinModuleEntries.doWithEntry: max=0.36 ms, total=0.36 ms, avg=0.36 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration.errorPageCustomizer: max=0.36 ms, total=0.36 ms, avg=0.36 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer.customizeMaxConnections: max=0.35 ms, total=0.35 ms, avg=0.35 ms, calls=1
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.getAsyncSupportConfigurer: max=0.69 ms, total=0.69 ms, avg=0.35 ms, calls=2
[TopJ] org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration.welcomePageHandlerMapping: max=0.34 ms, total=0.34 ms, avg=0.34 ms, calls=1
[TopJ] org.springframework.context.support.PropertySourcesPlaceholderConfigurer.postProcessBeanFactory: max=0.34 ms, total=0.34 ms, avg=0.34 ms, calls=1
[TopJ] org.springframework.web.cors.CorsConfiguration.addAllowedOriginPattern: max=0.34 ms, total=0.34 ms, avg=0.34 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer$SharedMetadataReaderFactoryBean.setResourceLoader: max=0.33 ms, total=0.33 ms, avg=0.33 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration.propertySourcesPlaceholderConfigurer: max=0.33 ms, total=0.33 ms, avg=0.33 ms, calls=1
[TopJ] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getSelfInitializer: max=0.33 ms, total=0.33 ms, avg=0.33 ms, calls=1
[TopJ] org.springframework.boot.StartupInfoLogger.appendVersion: max=0.33 ms, total=0.33 ms, avg=0.33 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer.customizeAcceptCount: max=0.32 ms, total=0.32 ms, avg=0.32 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer.customizeProcessorCache: max=0.32 ms, total=0.32 ms, avg=0.32 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer.customizeMaxQueueCapacity: max=0.32 ms, total=0.32 ms, avg=0.32 ms, calls=1
[TopJ] org.springframework.boot.loader.launch.JarFileArchive.getManifest: max=0.32 ms, total=0.32 ms, avg=0.32 ms, calls=1
[TopJ] org.springframework.core.NamedThreadLocal.withInitial: max=0.31 ms, total=0.31 ms, avg=0.31 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration.forceAutoProxyCreatorToUseClassProxying: max=0.31 ms, total=0.31 ms, avg=0.31 ms, calls=1
[TopJ] org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared: max=0.30 ms, total=0.30 ms, avg=0.30 ms, calls=1
[TopJ] org.springframework.cglib.core.EmitUtils.string_switch_hash: max=0.30 ms, total=0.30 ms, avg=0.30 ms, calls=1
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.addMimeMappings: max=0.29 ms, total=0.29 ms, avg=0.29 ms, calls=1
[TopJ] org.springframework.cglib.core.MethodWrapper$MethodWrapperKey.hashCode: max=3.29 ms, total=3.42 ms, avg=0.29 ms, calls=12
[TopJ] org.springframework.core.env.StandardEnvironment.customizePropertySources: max=0.56 ms, total=0.56 ms, avg=0.28 ms, calls=2
[TopJ] org.springframework.boot.StartupInfoLogger.appendPid: max=0.28 ms, total=0.28 ms, avg=0.28 ms, calls=1
[TopJ] org.springframework.boot.StartupInfoLogger.appendJavaVersion: max=0.28 ms, total=0.28 ms, avg=0.28 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.ssl.SslPropertiesBundleRegistrar.registerBundles: max=0.81 ms, total=0.83 ms, avg=0.28 ms, calls=3
[TopJ] org.springframework.boot.web.servlet.server.DocumentRoot.getExplodedWarFileDocumentRoot: max=0.53 ms, total=0.54 ms, avg=0.27 ms, calls=2
[TopJ] org.springframework.boot.loader.launch.JarFileArchive.asFileAttributes: max=0.51 ms, total=0.53 ms, avg=0.27 ms, calls=2
[TopJ] org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorHandler.handle: max=0.26 ms, total=0.26 ms, avg=0.26 ms, calls=1
[TopJ] org.springframework.web.context.support.StandardServletEnvironment.customizePropertySources: max=0.51 ms, total=0.51 ms, avg=0.26 ms, calls=2
[TopJ] org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer.customizeMaxHttpFormPostSize: max=0.25 ms, total=0.25 ms, avg=0.25 ms, calls=1
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatWebServer$1.start: max=0.25 ms, total=0.25 ms, avg=0.25 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration$ResourceBundleCondition.getResources: max=0.25 ms, total=0.25 ms, avg=0.25 ms, calls=1
[TopJ] org.springframework.web.cors.CorsConfiguration$OriginPattern.initPattern: max=0.38 ms, total=0.48 ms, avg=0.24 ms, calls=2
[TopJ] org.springframework.beans.factory.support.DefaultListableBeanFactory$DependencyObjectProvider.getIfUnique: max=1.40 ms, total=1.44 ms, avg=0.24 ms, calls=6
[TopJ] org.springframework.boot.task.ThreadPoolTaskExecutorBuilder.append: max=0.45 ms, total=0.47 ms, avg=0.23 ms, calls=2
[TopJ] org.springframework.boot.context.properties.bind.handler.NoUnboundElementsBindHandler.collectUnbound: max=0.46 ms, total=0.47 ms, avg=0.23 ms, calls=2
[TopJ] org.springframework.cglib.proxy.Enhancer.getCallbackField: max=1.79 ms, total=1.86 ms, avg=0.23 ms, calls=8
[TopJ] org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration.preserveErrorControllerTargetClassPostProcessor: max=0.23 ms, total=0.23 ms, avg=0.23 ms, calls=1
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedWebappClassLoader.start: max=0.23 ms, total=0.23 ms, avg=0.23 ms, calls=1
[TopJ] org.springframework.cglib.core.EmitUtils$3.processCase: max=0.23 ms, total=0.23 ms, avg=0.23 ms, calls=1
[TopJ] org.springframework.boot.validation.beanvalidation.MethodValidationExcludeFilter.byAnnotation: max=0.44 ms, total=0.45 ms, avg=0.23 ms, calls=2
[TopJ] org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer.customizeRejectIllegalHeader: max=0.22 ms, total=0.22 ms, avg=0.22 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer.customizeMaxKeepAliveRequests: max=0.22 ms, total=0.22 ms, avg=0.22 ms, calls=1
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatWebServer.getPortsDescription: max=0.39 ms, total=0.44 ms, avg=0.22 ms, calls=2
[TopJ] org.springframework.asm.ClassWriter.visitMethod: max=2.15 ms, total=2.20 ms, avg=0.22 ms, calls=10
[TopJ] org.springframework.boot.task.ThreadPoolTaskSchedulerBuilder.append: max=0.41 ms, total=0.42 ms, avg=0.21 ms, calls=2
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatWebServer.disableBindOnInit: max=0.21 ms, total=0.21 ms, avg=0.21 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer.customizeMinThreads: max=0.20 ms, total=0.20 ms, avg=0.20 ms, calls=1
[TopJ] org.springframework.boot.context.properties.source.SystemEnvironmentPropertyMapper.getAncestorOfCheck: max=0.59 ms, total=0.59 ms, avg=0.20 ms, calls=3
[TopJ] org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer.customizeMaxHttpResponseHeaderSize: max=0.20 ms, total=0.20 ms, avg=0.20 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletConfiguration.dispatcherServlet: max=0.19 ms, total=0.19 ms, avg=0.19 ms, calls=1
[TopJ] org.springframework.beans.factory.support.DefaultListableBeanFactory.clearMetadataCache: max=0.36 ms, total=0.37 ms, avg=0.18 ms, calls=2
[TopJ] org.springframework.boot.autoconfigure.web.servlet.TomcatServletWebServerFactoryCustomizer.customizeUseRelativeRedirects: max=0.18 ms, total=0.18 ms, avg=0.18 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer.customizeMaxSwallowSize: max=0.17 ms, total=0.17 ms, avg=0.17 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer.customizeHandler: max=1.67 ms, total=1.75 ms, avg=0.17 ms, calls=10
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.getInterceptors: max=0.84 ms, total=0.87 ms, avg=0.17 ms, calls=5
[TopJ] org.springframework.context.annotation.ParserStrategyUtils.createInstance: max=0.99 ms, total=4.67 ms, avg=0.17 ms, calls=27
[TopJ] org.springframework.boot.SpringBootBanner.printBanner: max=0.17 ms, total=0.17 ms, avg=0.17 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getExclusionFilter: max=0.32 ms, total=0.32 ms, avg=0.16 ms, calls=2
[TopJ] org.springframework.boot.StartupInfoLogger.appendApplicationName: max=0.32 ms, total=0.32 ms, avg=0.16 ms, calls=2
[TopJ] org.springframework.boot.loader.zip.ZipContent$Source.hashCode: max=26.78 ms, total=29.91 ms, avg=0.15 ms, calls=193
[TopJ] org.springframework.boot.context.config.ConfigDataEnvironmentContributors.asContributors: max=0.58 ms, total=0.62 ms, avg=0.15 ms, calls=4
[TopJ] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.prepareWebApplicationContext: max=0.15 ms, total=0.15 ms, avg=0.15 ms, calls=1
[TopJ] org.springframework.boot.BootstrapRegistry$InstanceSupplier.from: max=0.58 ms, total=0.59 ms, avg=0.15 ms, calls=4
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatWebServer.getPort: max=0.15 ms, total=0.15 ms, avg=0.15 ms, calls=1
[TopJ] org.springframework.core.io.DefaultResourceLoader.getResourceCache: max=0.57 ms, total=0.58 ms, avg=0.14 ms, calls=4
[TopJ] org.springframework.cglib.core.ClassEmitter.begin_class: max=0.28 ms, total=0.29 ms, avg=0.14 ms, calls=2
[TopJ] org.springframework.boot.logging.logback.LogbackConfigurator.root: max=0.14 ms, total=0.14 ms, avg=0.14 ms, calls=1
[TopJ] org.springframework.core.io.support.SpringFactoriesLoader.toDistinctUnmodifiableList: max=2.37 ms, total=2.78 ms, avg=0.14 ms, calls=20
[TopJ] org.springframework.boot.loader.net.protocol.jar.Handler.hashCode: max=3.88 ms, total=4.30 ms, avg=0.14 ms, calls=31
[TopJ] org.springframework.web.accept.ContentNegotiationManager.getAllFileExtensions: max=0.78 ms, total=0.79 ms, avg=0.13 ms, calls=6
[TopJ] org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration.parameterNamesModule: max=0.13 ms, total=0.13 ms, avg=0.13 ms, calls=1
[TopJ] org.springframework.core.io.ClassPathResource.getDescription: max=0.42 ms, total=0.50 ms, avg=0.13 ms, calls=4
[TopJ] org.springframework.cglib.core.CollectionUtils.filter: max=0.51 ms, total=0.61 ms, avg=0.12 ms, calls=5
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.getPathMatchConfigurer: max=1.15 ms, total=1.16 ms, avg=0.12 ms, calls=10
[TopJ] org.springframework.core.annotation.TypeMappedAnnotation.getValueExtractor: max=0.44 ms, total=0.44 ms, avg=0.11 ms, calls=4
[TopJ] org.springframework.boot.autoconfigure.web.OnEnabledResourceChainCondition.getEnabledProperty: max=0.30 ms, total=0.33 ms, avg=0.11 ms, calls=3
[TopJ] org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.removeDuplicates: max=0.11 ms, total=0.11 ms, avg=0.11 ms, calls=1
[TopJ] org.springframework.boot.SpringApplicationShutdownHook.addRuntimeShutdownHook: max=0.11 ms, total=0.11 ms, avg=0.11 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.condition.AbstractNestedCondition$MemberConditions.getMatchOutcomes: max=0.41 ms, total=0.42 ms, avg=0.11 ms, calls=4
[TopJ] org.springframework.util.ClassUtils.getMethodOrNull: max=0.14 ms, total=0.30 ms, avg=0.10 ms, calls=3
[TopJ] org.springframework.boot.logging.logback.DefaultLogbackConfiguration.consoleAppender: max=0.10 ms, total=0.10 ms, avg=0.10 ms, calls=1
[TopJ] org.springframework.web.servlet.FrameworkServlet.publishRequestHandledEvent: max=26.91 ms, total=95.07 ms, avg=0.10 ms, calls=1000
[TopJ] org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier: max=0.09 ms, total=0.09 ms, avg=0.09 ms, calls=1
[TopJ] org.springframework.boot.jackson.JsonMixinModuleEntries.scan: max=0.09 ms, total=0.09 ms, avg=0.09 ms, calls=1
[TopJ] org.springframework.boot.loader.net.protocol.jar.JarUrlClassLoader.getResources: max=0.17 ms, total=1.38 ms, avg=0.09 ms, calls=15
[TopJ] org.springframework.beans.factory.config.DependencyDescriptor.forFallbackMatch: max=1.56 ms, total=1.64 ms, avg=0.09 ms, calls=18
[TopJ] org.springframework.beans.factory.support.DefaultListableBeanFactory.addBeanPostProcessors: max=0.34 ms, total=0.36 ms, avg=0.09 ms, calls=4
[TopJ] org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.getCorsConfigurations: max=0.45 ms, total=0.45 ms, avg=0.09 ms, calls=5
[TopJ] org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer.customizeMaxThreads: max=0.09 ms, total=0.09 ms, avg=0.09 ms, calls=1
[TopJ] org.springframework.beans.factory.config.ConstructorArgumentValues.addArgumentValues: max=0.47 ms, total=0.51 ms, avg=0.08 ms, calls=6
[TopJ] org.springframework.cglib.core.CollectionUtils.bucket: max=0.15 ms, total=0.16 ms, avg=0.08 ms, calls=2
[TopJ] org.springframework.boot.loader.zip.ZipContent$Source.equals: max=6.98 ms, total=10.59 ms, avg=0.08 ms, calls=129
[TopJ] org.springframework.core.io.support.SpringFactoriesLoader$ArgumentResolver.and: max=2.04 ms, total=2.11 ms, avg=0.08 ms, calls=26
[TopJ] org.springframework.boot.autoconfigure.condition.OnBeanCondition.appendMessageForMatches: max=0.44 ms, total=0.46 ms, avg=0.08 ms, calls=6
[TopJ] org.springframework.core.convert.support.ObjectToObjectConverter.determineToMethod: max=0.14 ms, total=0.15 ms, avg=0.07 ms, calls=2
[TopJ] org.springframework.util.ConcurrentLruCache$ReadOperations.drain: max=3.12 ms, total=3.27 ms, avg=0.07 ms, calls=44
[TopJ] org.springframework.beans.factory.support.DefaultListableBeanFactory$DependencyObjectProvider.resolveStream: max=1.18 ms, total=1.28 ms, avg=0.07 ms, calls=18
[TopJ] org.springframework.web.context.request.async.StandardServletAsyncWebRequest$LifecycleHttpServletResponse.getContentType: max=12.84 ms, total=69.30 ms, avg=0.07 ms, calls=1000
[TopJ] org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.getEnvironmentPostProcessors: max=0.07 ms, total=0.07 ms, avg=0.07 ms, calls=1
[TopJ] org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.build: max=0.09 ms, total=0.48 ms, avg=0.07 ms, calls=7
[TopJ] org.springframework.util.AntPathMatcher$AntPathStringMatcher.matchStrings: max=0.07 ms, total=0.27 ms, avg=0.07 ms, calls=4
[TopJ] org.springframework.boot.context.properties.bind.Binder.fromDataObjectBinders: max=0.68 ms, total=1.36 ms, avg=0.07 ms, calls=20
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedContext.getServletContext: max=21.06 ms, total=267.19 ms, avg=0.07 ms, calls=4017
[TopJ] org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration$StandardJackson2ObjectMapperBuilderCustomizer.configureFeatures: max=0.50 ms, total=0.53 ms, avg=0.07 ms, calls=8
[TopJ] org.springframework.asm.ClassWriter.visitField: max=0.76 ms, total=0.78 ms, avg=0.06 ms, calls=12
[TopJ] org.springframework.core.convert.support.GenericConversionService$ConvertersForPair.getConverter: max=0.48 ms, total=0.57 ms, avg=0.06 ms, calls=9
[TopJ] org.springframework.util.ConcurrentLruCache$ReadOperations.detectNumberOfBuffers: max=0.06 ms, total=0.06 ms, avg=0.06 ms, calls=1
[TopJ] org.springframework.boot.logging.logback.LogbackLoggingSystem.removeDefaultRootHandler: max=0.06 ms, total=0.06 ms, avg=0.06 ms, calls=1
[TopJ] org.springframework.core.annotation.AttributeMethods.compute: max=2.85 ms, total=4.04 ms, avg=0.06 ms, calls=65
[TopJ] org.springframework.boot.autoconfigure.condition.ConditionEvaluationReport.addNoMatchOutcomeToAncestors: max=0.78 ms, total=10.15 ms, avg=0.06 ms, calls=165
[TopJ] org.springframework.boot.loader.net.protocol.Handlers.register: max=0.06 ms, total=0.06 ms, avg=0.06 ms, calls=1
[TopJ] org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons: max=0.06 ms, total=0.06 ms, avg=0.06 ms, calls=1
[TopJ] org.springframework.boot.autoconfigure.AutoConfigurationSorter.getInPriorityOrder: max=0.06 ms, total=0.06 ms, avg=0.06 ms, calls=1
[TopJ] org.springframework.boot.logging.LoggingSystem.get: max=0.06 ms, total=0.06 ms, avg=0.06 ms, calls=1
[TopJ] org.springframework.core.OrderComparator.withSourceProvider: max=1.00 ms, total=1.06 ms, avg=0.06 ms, calls=18
[TopJ] org.springframework.core.NestedRuntimeException.fillInStackTrace: max=0.06 ms, total=0.18 ms, avg=0.06 ms, calls=3
[TopJ] org.springframework.web.filter.FormContentFilter.shouldParse: max=18.86 ms, total=57.99 ms, avg=0.06 ms, calls=1000
[TopJ] org.springframework.boot.autoconfigure.BackgroundPreinitializer$ConversionServiceInitializer.run: max=0.06 ms, total=0.06 ms, avg=0.06 ms, calls=1
[TopJ] org.springframework.boot.system.ApplicationHome.findHomeDir: max=0.05 ms, total=0.05 ms, avg=0.05 ms, calls=1
[TopJ] org.springframework.cglib.core.TypeUtils.fromInternalName: max=0.18 ms, total=0.22 ms, avg=0.05 ms, calls=4
[TopJ] org.springframework.boot.logging.logback.LogbackLoggingSystem.stopAndReset: max=0.05 ms, total=0.05 ms, avg=0.05 ms, calls=1
[TopJ] org.springframework.web.servlet.mvc.method.annotation.ModelAndViewMethodReturnValueHandler.supportsReturnType: max=14.80 ms, total=51.52 ms, avg=0.05 ms, calls=1000
[TopJ] org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandlerExecutionChain: max=20.48 ms, total=51.34 ms, avg=0.05 ms, calls=1000
[TopJ] org.springframework.boot.loader.launch.Launcher.launch: max=0.07 ms, total=0.10 ms, avg=0.05 ms, calls=2
[TopJ] org.springframework.core.NamedInheritableThreadLocal.initialValue: max=22.96 ms, total=51.24 ms, avg=0.05 ms, calls=1000
[TopJ] org.springframework.web.servlet.DispatcherServlet.doService: max=22.74 ms, total=50.99 ms, avg=0.05 ms, calls=1000
[TopJ] org.springframework.boot.autoconfigure.BackgroundPreinitializer$ValidationInitializer.run: max=0.05 ms, total=0.05 ms, avg=0.05 ms, calls=1
[TopJ] org.springframework.web.util.ServletRequestPathUtils$ServletRequestPath.getServletPathPrefix: max=15.24 ms, total=49.54 ms, avg=0.05 ms, calls=1000
[TopJ] org.springframework.boot.context.properties.bind.JavaBeanBinder$Bean.isInstantiable: max=0.39 ms, total=0.94 ms, avg=0.05 ms, calls=19
[TopJ] org.springframework.cglib.core.Signature.toString: max=0.05 ms, total=0.05 ms, avg=0.05 ms, calls=1
[TopJ] org.springframework.util.ConcurrentLruCache$DrainStatus$3.shouldDrainBuffers: max=12.07 ms, total=12.70 ms, avg=0.05 ms, calls=260
[TopJ] org.springframework.core.io.support.SpringFactoriesLoader$FailureHandler.throwing: max=0.08 ms, total=0.10 ms, avg=0.05 ms, calls=2
[TopJ] org.springframework.web.context.support.GenericWebApplicationContext.createEnvironment: max=0.05 ms, total=0.05 ms, avg=0.05 ms, calls=1
[TopJ] org.springframework.web.method.support.ModelAndViewContainer.addAllAttributes: max=19.76 ms, total=48.20 ms, avg=0.05 ms, calls=1000
[TopJ] org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration$LocaleCharsetMappingsCustomizer.customize: max=0.05 ms, total=0.05 ms, avg=0.05 ms, calls=1
[TopJ] org.springframework.boot.loader.launch.JarLauncher.getClassPathIndex: max=0.05 ms, total=0.05 ms, avg=0.05 ms, calls=1
[TopJ] org.springframework.core.env.PropertySource.named: max=0.30 ms, total=0.38 ms, avg=0.05 ms, calls=8
[TopJ] org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.selectHandler: max=20.83 ms, total=47.56 ms, avg=0.05 ms, calls=1000
[TopJ] org.springframework.boot.logging.logback.RootLogLevelConfigurator.configure: max=0.05 ms, total=0.05 ms, avg=0.05 ms, calls=1
[TopJ] org.springframework.asm.FieldWriter.computeFieldInfoSize: max=0.56 ms, total=0.57 ms, avg=0.05 ms, calls=12
[TopJ] org.springframework.web.util.UrlPathHelper.getOriginatingRequestUri: max=11.84 ms, total=47.25 ms, avg=0.05 ms, calls=1000
[TopJ] org.springframework.boot.autoconfigure.BackgroundPreinitializer$MessageConverterInitializer.run: max=0.05 ms, total=0.05 ms, avg=0.05 ms, calls=1
[TopJ] org.springframework.core.StandardReflectionParameterNameDiscoverer.getParameterNames: max=0.08 ms, total=0.09 ms, avg=0.05 ms, calls=2
[TopJ] org.springframework.core.log.LogMessage.of: max=0.34 ms, total=0.37 ms, avg=0.05 ms, calls=8
[TopJ] org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter.getAlreadyFilteredAttributeName: max=28.63 ms, total=46.29 ms, avg=0.05 ms, calls=1000
[TopJ] org.springframework.boot.context.config.ConfigDataLocationResolvers.resolve: max=0.58 ms, total=0.65 ms, avg=0.05 ms, calls=14
[TopJ] org.springframework.core.annotation.AnnotatedMethod$AnnotatedMethodParameter.hasMethodAnnotation: max=21.23 ms, total=91.10 ms, avg=0.05 ms, calls=2000
[TopJ] org.springframework.boot.context.properties.PropertyMapper$Source.whenHasText: max=0.18 ms, total=0.18 ms, avg=0.05 ms, calls=4
[TopJ] org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration.customize: max=0.05 ms, total=0.05 ms, avg=0.05 ms, calls=1
[TopJ] org.springframework.boot.web.embedded.tomcat.TomcatWebServer.findContext: max=0.06 ms, total=0.09 ms, avg=0.05 ms, calls=2
[TopJ] org.springframework.web.context.request.async.StandardServletAsyncWebRequest$LifecycleHttpServletResponse.addHeader: max=25.19 ms, total=90.21 ms, avg=0.05 ms, calls=2000
....
And the output of ab:
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software:
Server Hostname: localhost
Server Port: 8080
Document Path: /
Document Length: 12 bytes
Concurrency Level: 10
Time taken for tests: 7.999 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 150000 bytes
HTML transferred: 12000 bytes
Requests per second: 125.01 [#/sec] (mean)
Time per request: 79.992 [ms] (mean)
Time per request: 7.999 [ms] (mean, across all concurrent requests)
Transfer rate: 18.31 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.5 0 6
Processing: 7 50 105.3 42 3278
Waiting: 7 44 104.8 36 3270
Total: 7 50 105.3 42 3278
Percentage of the requests served within a certain time (ms)
50% 42
66% 52
75% 61
80% 65
90% 80
95% 98
98% 117
99% 137
100% 3278 (longest request)
The initial finding are that there no serious bottlenecks anywhere. All methods are generally fast. The max does skew the stats - for example
org.springframework.boot.loader.net.protocol.jar.Handler.assertInnerUrlIsNotMalformed: max=112.63 ms, total=112.72 ms, avg=3.22 ms, calls=35, but this is likely an inner JVM JIT thing outside the scope of this. You can see where the requests have an impact on stack by seeing the number calls that are >1000.
Solution
With no major bottlenecks of note, it's hard to fault this popular microservice. The only fix suggested is to limit the amount of classes and method calls - the stack is extremely fragmented, and method calls amounting to millions can add drag.