This is an automated email from the ASF dual-hosted git repository.
orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-website.git
The following commit(s) were added to refs/heads/main by this push:
new 142e74cc Added new blog post about the performance improvements from
4.0 to 4.2 (#1098)
142e74cc is described below
commit 142e74cc2d60831a9693af2ccda13fa172dd47de
Author: Otavio Rodolfo Piske <[email protected]>
AuthorDate: Sun Nov 26 14:16:12 2023 +0100
Added new blog post about the performance improvements from 4.0 to 4.2
(#1098)
---
.../camel-platform-http-vertx-403-to-420.svg | 1 +
...mel-platform-http-vertx-403-to-430-snapshot.svg | 1 +
.../cbr-4.2.0-vs-4.0.2.svg | 1 +
.../featured.jpeg | Bin 0 -> 294158 bytes
.../11/camel-4-performance-improvements-2/index.md | 61 +++++++++++++++++++++
5 files changed, 64 insertions(+)
diff --git
a/content/blog/2023/11/camel-4-performance-improvements-2/camel-platform-http-vertx-403-to-420.svg
b/content/blog/2023/11/camel-4-performance-improvements-2/camel-platform-http-vertx-403-to-420.svg
new file mode 100644
index 00000000..fa5f5a94
--- /dev/null
+++
b/content/blog/2023/11/camel-4-performance-improvements-2/camel-platform-http-vertx-403-to-420.svg
@@ -0,0 +1 @@
+<svg version="1.1" viewBox="0.0 0.0 645.0 399.0" fill="none" stroke="none"
stroke-linecap="square" stroke-miterlimit="10" width="645" height="399"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"><path fill="#ffffff" d="M0 0L645.0 0L645.0
399.0L0 399.0L0 0Z" fill-rule="nonzero"/><path stroke="#333333"
stroke-width="1.0" stroke-linecap="butt" d="M92.5 372.5L625.5 372.5"
fill-rule="nonzero"/><path stroke="#cccccc" stroke-width="1.0"
stroke-linecap="butt" d="M92 [...]
\ No newline at end of file
diff --git
a/content/blog/2023/11/camel-4-performance-improvements-2/camel-platform-http-vertx-403-to-430-snapshot.svg
b/content/blog/2023/11/camel-4-performance-improvements-2/camel-platform-http-vertx-403-to-430-snapshot.svg
new file mode 100644
index 00000000..31637809
--- /dev/null
+++
b/content/blog/2023/11/camel-4-performance-improvements-2/camel-platform-http-vertx-403-to-430-snapshot.svg
@@ -0,0 +1 @@
+<svg version="1.1" viewBox="0.0 0.0 645.0 399.0" fill="none" stroke="none"
stroke-linecap="square" stroke-miterlimit="10" width="645" height="399"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"><path fill="#ffffff" d="M0 0L645.0 0L645.0
399.0L0 399.0L0 0Z" fill-rule="nonzero"/><path stroke="#333333"
stroke-width="1.0" stroke-linecap="butt" d="M92.5 372.5L625.5 372.5"
fill-rule="nonzero"/><path stroke="#cccccc" stroke-width="1.0"
stroke-linecap="butt" d="M92 [...]
\ No newline at end of file
diff --git
a/content/blog/2023/11/camel-4-performance-improvements-2/cbr-4.2.0-vs-4.0.2.svg
b/content/blog/2023/11/camel-4-performance-improvements-2/cbr-4.2.0-vs-4.0.2.svg
new file mode 100644
index 00000000..a77c9e6e
--- /dev/null
+++
b/content/blog/2023/11/camel-4-performance-improvements-2/cbr-4.2.0-vs-4.0.2.svg
@@ -0,0 +1 @@
+<svg version="1.1" viewBox="0.0 0.0 600.0 385.0" fill="none" stroke="none"
stroke-linecap="square" stroke-miterlimit="10" width="600" height="385"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"><path fill="#ffffff" d="M0 0L600.0 0L600.0
385.0L0 385.0L0 0Z" fill-rule="nonzero"/><path stroke="#333333"
stroke-width="1.0" stroke-linecap="butt" d="M105.5 345.5L580.5 345.5"
fill-rule="nonzero"/><path stroke="#cccccc" stroke-width="1.0"
stroke-linecap="butt" d="M1 [...]
\ No newline at end of file
diff --git
a/content/blog/2023/11/camel-4-performance-improvements-2/featured.jpeg
b/content/blog/2023/11/camel-4-performance-improvements-2/featured.jpeg
new file mode 100644
index 00000000..df9f96da
Binary files /dev/null and
b/content/blog/2023/11/camel-4-performance-improvements-2/featured.jpeg differ
diff --git a/content/blog/2023/11/camel-4-performance-improvements-2/index.md
b/content/blog/2023/11/camel-4-performance-improvements-2/index.md
new file mode 100644
index 00000000..5c5526de
--- /dev/null
+++ b/content/blog/2023/11/camel-4-performance-improvements-2/index.md
@@ -0,0 +1,61 @@
+---
+title: "The Rise and Fall of the Performance Monsters"
+date: 2023-11-26
+draft: false
+authors: [orpiske]
+categories: ["Features", "Camel"]
+preview: "The Rise and Fall of the Performance Monsters"
+---
+
+# Introduction
+
+Apache Camel has [always been committed to delivering top-notch
performance](/blog/2023/05/camel-4-performance-improvements/). As the
development of Camel 4 progressed, so did the dedication to enhancing its
performance. In this blog post, we'll explore the advances made in the pursuit
of efficiency, focusing on key improvements introduced between Camel 4.1 and
4.2, with a few important improvements for the upcoming 4.3.
+
+# Camel 4.1: A Leap Forward in Type Conversion
+
+One of the notable enhancements in Camel 4.1 was the introduction of a new
type converter. While being slightly more strict, this converter proved to be
simpler to maintain and offered a modest boost in speed. This change was not
without its challenges, as some minor issues and bugs surfaced in the wake of
these adjustments. However, the development community swiftly addressed these
concerns, ensuring a smoother experience for users.
+
+# Camel 4.2: Optimizing for Peak Performance
+
+Building on the momentum of Camel 4.1, version 4.2 brought about significant
optimizations, particularly in the realm of type converter cache handling and
resolution. The community also applied strategic micro-optimizations, designed
to assist the JIT Compiler in effectively inlining code. Furthermore, attention
was given to the platform-http-vertx component hot path, where inefficiencies
were identified and rectified.
+
+# Quantifying the Gains: Performance Metrics
+
+
+The tangible results of these optimizations are evident in the performance
improvements across various Camel EIPs (Enterprise Integration Patterns).
+
+Comparing Camel 4.1 and 4.2 to their predecessors, it's clear that aggregator,
content-based route, and filter EIPs run notably and consistently faster on the
newer versions. For instance, the image below shows the result of just one of
thousand of tests executed.
+
+
+
+In this test, Camel version 4.2.0 processed exchanges about 18% faster than
Camel 4.0.2 when doing so through a content-based router.
+
+# Camel Platform HTTP Vert.x: A Highlight in Efficiency
+
+The optimizations within the Platform HTTP Vert.x component delivered
measurable performance gains.
+
+In our tests, the throughput increased by approximately 5% from Camel 4.0 to
4.2.
+
+
+
+With the current development code, there are indications of further gains,
which are likely to be caused by a newer version of Vert.X:
+
+
+
+The average response time exhibited a progressive decline: from 0.367ms in
4.0.3, to 0.345 ms in 4.2.0, stabilizing around the same value for the current
development version with an average of 0.348 ms.
+
+The numbers for Camel 4.1 show a significant decrease in performance due to a
bug that caused a cache miss when trying to resolve a type converter. This bug
was fixed in 4.2.0.
+
+# Testing: Ensuring Reliability
+
+The reliability of these performance enhancements was validated through
rigorous testing methodologies. For core components, the [Camel Load
Tester](https://github.com/orpiske/camel-load-tester) project was employed,
ensuring a comprehensive evaluation of the framework's capabilities. The
testing of Platform HTTP Vert.x components, on the other hand, leveraged
[Hyperfoil](https://hyperfoil.io/), a powerful benchmarking tool.
+
+Micro-optimizations, scattered throughout the codebase, underwent [meticulous
scrutiny](https://github.com/apache/camel-performance-tests) using [JMH (Java
Microbenchmark Harness)](https://github.com/openjdk/jmh/). This thorough
testing approach guarantees that each optimization contributes positively to
the overall performance without introducing unforeseen issues.
+
+All of our tests were performed executed using Java 17.0.9, running on Red Hat
Enteprise Linux 9.3. The test system was a PowerEdge R640 with 2 Intel Xeon
Silver 4116 CPUs, each with 12 cores, and 192 Gb of memory.
+
+# Looking Ahead: The Evolution Continues
+
+As Camel progresses towards version 4.3.0, the commitment to performance
remains unwavering. The community continues to explore innovative ways to
enhance speed, efficiency, and overall user experience. Whether it's refining
existing features or introducing new optimizations, Apache Camel is dedicated
to being at the forefront of integration frameworks, empowering developers to
build seamless, high-performance applications.
+
+In conclusion, the journey of Apache Camel is not just about feature-rich
functionality but also about delivering a robust and performant framework. The
advancements in Camel 4.1 and 4.2, coupled with the promising improvements in
the upcoming 4.3.0 release, underscore the project's commitment to excellence.
As users embrace these updates, they can look forward to a more responsive and
efficient integration experience with Apache Camel.
\ No newline at end of file