[JAVA] [Überprüfung] Vergleich der Spring Boot- mit der Micronaut-Boot-Geschwindigkeit

Java Adventskalender 2019 Dies ist der Artikel am 24. Tag.

Ich bin noch vor Weihnachten frei: Wut: Ich habe die einfachen Startgeschwindigkeiten von Spring Boot, einem sprachbasierten JVM-Framework, und Micronaut verglichen.

Der Frühling ist ein Rahmen, den jeder kennt, daher werde ich die Einführung weglassen

Was ist Mirconaut?

Offizielle Seite https://micronaut.io/

Charakteristisch

Überprüfung

Umgebung

Ausführungsumgebung

Methode

Implementierung

SpringBoot

python


@RestController
public class HelloController {

    @RequestMapping(value="/hello", method=RequestMethod.GET)
    public String hello() {
        return "Hello Spring";
    }
}

Starten Sie Tomcat

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.2.RELEASE)

2019-12-23 14:29:46.247  INFO 73041 --- [           main] com.example.sphelloapp.DemoApplication   : Starting DemoApplication
2019-12-23 14:29:46.250  INFO 73041 --- [           main] com.example.sphelloapp.DemoApplication   : No active profile set, falling back to default profiles: default
2019-12-23 14:29:46.925  INFO 73041 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2019-12-23 14:29:46.935  INFO 73041 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-12-23 14:29:46.935  INFO 73041 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.29]
2019-12-23 14:29:46.984  INFO 73041 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-12-23 14:29:46.984  INFO 73041 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 695 ms
2019-12-23 14:29:47.105  INFO 73041 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-12-23 14:29:47.214  INFO 73041 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2019-12-23 14:29:47.216  INFO 73041 --- [           main] com.example.sphelloapp.DemoApplication   : Started DemoApplication in 1.233 seconds (JVM running for 1.556)

Anlegesteg starten

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.2.RELEASE)

2019-12-23 14:22:39.036  INFO 72942 --- [           main] c.e.sphelloappjetty.DemoApplication      : Starting DemoApplication
2019-12-23 14:22:39.038  INFO 72942 --- [           main] c.e.sphelloappjetty.DemoApplication      : No active profile set, falling back to default profiles: default
2019-12-23 14:22:39.651  INFO 72942 --- [           main] org.eclipse.jetty.util.log               : Logging initialized @1229ms to org.eclipse.jetty.util.log.Slf4jLog
2019-12-23 14:22:39.713  INFO 72942 --- [           main] o.s.b.w.e.j.JettyServletWebServerFactory : Server initialized with port: 8080
2019-12-23 14:22:39.716  INFO 72942 --- [           main] org.eclipse.jetty.server.Server          : jetty-9.4.24.v20191120; built: 2019-11-20T21:37:49.771Z; git: 363d5f2df3a8a28de40604320230664b9c793c16; jvm 1.8.0_232-20191009173705.graal.jdk8u-src-tar-gz-b07
2019-12-23 14:22:39.738  INFO 72942 --- [           main] o.e.j.s.h.ContextHandler.application     : Initializing Spring embedded WebApplicationContext
2019-12-23 14:22:39.739  INFO 72942 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 664 ms
2019-12-23 14:22:39.815  INFO 72942 --- [           main] org.eclipse.jetty.server.session         : DefaultSessionIdManager workerName=node0
2019-12-23 14:22:39.815  INFO 72942 --- [           main] org.eclipse.jetty.server.session         : No SessionScavenger set, using defaults
2019-12-23 14:22:39.816  INFO 72942 --- [           main] org.eclipse.jetty.server.session         : node0 Scavenging every 660000ms
2019-12-23 14:22:39.821  INFO 72942 --- [           main] o.e.jetty.server.handler.ContextHandler  : Started o.s.b.w.e.j.JettyEmbeddedWebAppContext@45f45fa1{application,/,[file:///private/var/folders/xk/q20_p4gd2xz1sfmtmngwjg380000gp/T/jetty-docbase.146795275059491819.8080/],AVAILABLE}
2019-12-23 14:22:39.822  INFO 72942 --- [           main] org.eclipse.jetty.server.Server          : Started @1400ms
2019-12-23 14:22:39.922  INFO 72942 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-12-23 14:22:40.036  INFO 72942 --- [           main] o.e.j.s.h.ContextHandler.application     : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-12-23 14:22:40.036  INFO 72942 --- [           main] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-12-23 14:22:40.040  INFO 72942 --- [           main] o.s.web.servlet.DispatcherServlet        : Completed initialization in 4 ms
2019-12-23 14:22:40.060  INFO 72942 --- [           main] o.e.jetty.server.AbstractConnector       : Started ServerConnector@37574691{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
2019-12-23 14:22:40.062  INFO 72942 --- [           main] o.s.b.web.embedded.jetty.JettyWebServer  : Jetty started on port(s) 8080 (http/1.1) with context path '/'
2019-12-23 14:22:40.064  INFO 72942 --- [           main] c.e.sphelloappjetty.DemoApplication      : Started DemoApplication in 1.299 seconds (JVM running for 1.643)

(Referenz) Einstellungen zum Starten des Stegs (Gradle)

build.gradle


dependencies {
    compile('org.springframework.boot:spring-boot-starter-web') {
        exclude module: 'spring-boot-starter-tomcat'
    }
    compile('org.springframework.boot:spring-boot-starter-jetty')
}
Starten Sie das native Image

Spring unterstützt Native Image noch nicht offiziell (geplant für das 2. Quartal 2020) Die experimentelle Version ist auf Github, überprüfen Sie dies also (nur Tomcat, kein Steg) https://github.com/spring-projects-experimental/spring-graal-native

Verfahren

  1. Klonen Sie spring-graal-native auf GitHub
  2. Führen Sie . / Build-feature.sh aus
  3. Gehen Sie zu spring-graal-native-samples / springmvc-tomcat
  4. Führen Sie . / Compile.sh aus (1-2 Minuten) スクリーンショット 2019-12-23 15.30.52.png
  5. Gehen Sie zum Ordner "target" und stellen Sie sicher, dass "springmvc-tomcat" generiert wird
  6. Führen Sie mit . / Springmvc-tomcat aus

Damit ist die Vorbereitung auf der Federseite abgeschlossen

Micronaut

HelloController.java


@Controller
public class HelloController{

    @Get(value="/hello", produces = MediaType.TEXT_PLAIN)
    public String index(){
        return "Hello Micronaut";
    }
}

Anlaufen

14:37:49.383 [main] INFO  io.micronaut.runtime.Micronaut - Startup completed in 985ms. Server Running: http://localhost:8080
Starten Sie das native Image

Micronaut unterstützt Native Image standardmäßig, aber Sie können es genießen, indem Sie ein Projekt erstellen, das Native Image gewidmet ist.

  1. $mn create-app hello-graal --features graal-native-image
  2. Implementieren Sie "HelloController.java"
  3. Führen Sie ./gradlew build aus
  4. Führen Sie $ native-image --no-server -cp build / libs / hallo-graal-0.1-all.jar aus (1 bis 2 Minuten)
  5. Führen Sie . / Hello-graal aus

Damit ist die Vorbereitung auf der Micronaut-Seite abgeschlossen

Ergebnis

図1.png スクリーンショット 2019-12-23 16.15.25.png

Erwägung

Schließlich

Da wir diesmal mit einer einfachen App überprüfen, kann das Ergebnis bei einer tatsächlich komplexen App anders sein. Wir hoffen, dass Sie es nur als Referenz sehen können. Wenn ich die Chance dazu bekomme, werde ich versuchen, Frameworks wie Helidon und Quarkus zu überprüfen.

Recommended Posts

[Überprüfung] Vergleich der Spring Boot- mit der Micronaut-Boot-Geschwindigkeit
[Vergleichsüberprüfung] Wie unterschiedlich ist die Entwicklungsproduktivität der Spring Boot-App von der Vergangenheit?
[Java] Geschwindigkeitsvergleich der Zeichenfolgenkombination
Memorandum beim Spring Boot 1.5.10 → Spring Boot 2.0.0
Spring Boot Programmierung mit VS Code
Nachricht erlöschen (Spring Boot)
Versuchen Sie es mit Spring Boot mit VS-Code
WebMvcConfigurer-Memorandum von Spring Boot 2.0 (Spring 5)
Zusammenfassung dessen, was ich über Spring Boot gelernt habe
[FCM] Implementierung der Nachrichtenübertragung mit FCM + Spring Boot
Die Geschichte der Erhöhung der Spring Boot 1.5-Serie auf die 2.1-Serie
Lassen Sie uns das Gefühl von Spring Boot + Swagger 2.0 überprüfen
Verschiedene Korrespondenztabellen zwischen Spring Framework und Spring Boot
Wenn @Transactional of Spring Boot nicht funktioniert
Erstellen Sie eine Spring Boot-Umgebung mit Windows + VS-Code
Überprüfung von [email protected]
Spring Boot Denken Sie daran
gae + frühlingsstiefel
Geben Sie die statische Ressourcencodierung in Spring Boot an
Untersuchte asynchrone Ausführung von Abfragen in Spring Boot 1.5.9
Ein Memorandum über die Sucht nach Spring Boot2 x Doma2
[Java] Vergleich der Ausführungsgeschwindigkeit des String-Joins (+ Operator vs StringBuilder)
Geschwindigkeitsvergleich zum Zeitpunkt der Generierung zum Zeitpunkt der Datumskonvertierung
Greifen Sie mit jdbcTemplate auf das integrierte h2db des Spring Boot zu
05. Ich habe versucht, die Quelle von Spring Boot zu löschen
Verwendung von CommandLineRunner im Spring Batch von Spring Boot
Erstellen Sie Restapi mit Spring Boot (bis zum Ausführen der App)
Booten nach Umgebung mit Spring Boot of Maven
[Spring Batch] Überprüfung der Implementierung von Chunk Step und Tasklet Step von Spring Batch
[Java] [Spring] Vergleichsnotiz für Java EE (JAX-RS) vs. Spring REST-Implementierung
Hallo Welt Vergleich zwischen Spark Framework und Spring Boot