Performance Testing
Comprehensive performance testing has been performed on Easy Extension Framework to assess the impact on JVM memory usage and application response times. These tests ensure that integrating Easy does not introduce memory inefficiencies or degrade system responsiveness.
JVM Memory Test
When developing new features with the Easy Extension Framework, it is common to make multiple code changes and repeatedly install or uninstall extensions. This test evaluates the effect of frequent install and uninstall operations on JVM metaspace usage.
JVM Memory Test Setup
Easy Extension Configuration for JVM Memory Test
A large Easy extension, available in private Git Repository (metaspace-test extension), was used for this test. This extension loads over 1,000 beans and DTOs to simulate a complex extension scenario.
A large Easy extension, available in private Git Repository (metaspace-test extension), was used for this test. This extension loads over 1,000 beans and DTOs to simulate a complex extension scenario.
The extension adds a price conversion service for fetching crypto prices, a Populator for DTO data, and a DataMapper for API responses.
To measure memory impact, 1,000 DTOs are created and loaded via
EasyBeans.groovy
within the extension.
Test Scenario and Scripts for JVM Memory Test
The test was executed over a 2-hour period, with extension install and uninstall operations triggered every 10 seconds.
JVM memory logs were collected throughout these operations to monitor and validate Metaspace usage.
Custom scripts used for collecting JVM logs, easy extension installation and to analyze logs. Custom scripts are available in private Git Repository - (Scripts)
Testing was performed in a local development environment.
Test Results for JVM Memory Test
Metaspace Classes Count

Metaspace Class Loaders

Metaspace Memory Usage

JVM Memory Test Conclusion
The results demonstrate that repeated installation and uninstallation of extensions does not adversely affect JVM memory usage. Classes are loaded only once unless the extension changes, in which case only the relevant classes are reloaded. This confirms that Easy Extensions manage class loading efficiently, avoiding memory leaks and unnecessary class retention.
Response Time Validation
A key advantage of Easy Extension Framework is the ability to add new features to out-of-the-box functionality without redeployment. For example, adding a new attribute to the Product API response to display different product prices can be accomplished quickly using the framework.
To ensure this flexibility does not impact performance, response time testing is conducted to measure the effect of extending out-of-the-box features.
Test Setup
Easy Extension Configuration
The
alternatecurrency
extension was used for performance testing.This extension introduces a new price service, DTO, and data mapper to extend the Product API with crypto prices.
Test Scenario and Scripts
A 1-hour OCC APIs performance test, with and without the
alternatecurrency
extension was conducted which include browsing, cart and checkout scenarios.JMeter scripts for OCC APIs were used for performance testing to simulate Browsing, Cart and Checkout scenarios.
Test Results
Request Throughput without Easy

API Service CPU Utilization without Easy

95th Percentile Response Time without Easy

Product API - 95th Percentile Response Time without Easy

Request Throughput with Easy

API Service CPU Utilization with Easy

95th Percentile Response Time with Easy

Product API - 95th Percentile Response Time with Easy

Performance Metrics Comparison
Metric | With Easy Extension | Without Easy Extension |
---|---|---|
#Samples | 269396 | 268260 |
Average (ms) | 39.87 | 45.50 |
90th pct (ms) | 73.00 | 85.00 |
95th pct (ms) | 160.00 | 170.00 |
Transactions/s | 74.74 | 74.32 |
Conclusion
The results show that similar throughput is achieved in both scenarios, with and without easy extensions, confirming that the framework does not introduce significant performance overhead.