Runtime Bytecode Call Transformation for Java Map Performance

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing Java APIs, such as Map and ConcurrentMap, require clients to wait for return values during put operations even if they are not needed, leading to unnecessary slowdowns in application code, especially in scenarios where data is distributed across multiple machines.

Innovation Solution

A method and system that analyze application code at runtime to determine if return values are used, transforming calls to either a fast implementation that does not return values or an alternative slow implementation that avoids monitoring operations, optimizing performance by eliminating unnecessary waits.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the client invokes the put operation that returns a previous value, then the client can obtain the correct previous value, but the client experiences unnecessary wait time even when the return value is not needed

Engineering Contradiction:
Improvecorrectness of previous value returnVSAvoidwait time for put operation
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system dynamically transforms the put operation implementation at runtime based on whether the return value is needed. The bytecode transformation agent analyzes the call site and replaces calls to the returning put operation with calls to a non-returning put operation when the return value is not used, making the system adaptive to runtime conditions.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The invention changes the operational parameters of the put operation by providing two versions: one that returns the previous value and one that does not. The bytecode transformation selectively invokes the appropriate version based on runtime analysis of whether the return value will be used, effectively changing the behavior parameter of the operation.

Inventive Principle:
Principle #35Parameter changes

2Ease of operation

If the API is designed to always return a previous value, then the API maintains consistency and simplicity, but the application performance deteriorates due to unnecessary waits

Engineering Contradiction:
ImproveAPI consistency and simplicityVSAvoidapplication operation speed
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The bytecode transformation agent acts as an intermediary between the client code and the put operation implementation. It analyzes the client code to determine whether the return value is needed and automatically selects the appropriate put operation version, shielding the client from the complexity of having to choose between different API versions.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system performs self-optimization by automatically analyzing its own execution patterns and transforming its behavior. The bytecode transformation agent monitors runtime behavior and autonomously replaces put operation calls with optimized versions without requiring external intervention or code modification from the client.

Inventive Principle:
Principle #25Self-service

3Productivity

If the client code is re-written to be parameterized for Infinispan cache, then the performance can be optimized by choosing different put operations, but the code loses portability and requires proprietary modifications

Engineering Contradiction:
Improveoptimized put operation performanceVSAvoidcode portability and generality
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The bytecode transformation agent provides universal optimization that works with any Map implementation, not just Infinispan cache. It uses reflection and runtime analysis to identify put operation calls and transform them appropriately, making the optimization technique applicable across different data structures and implementations without requiring proprietary code modifications.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS9183021B2Runtime optimization of application bytecode via call transformations
Publication Date: 2015.11.10 RED HAT INC
  • US9183021B2 patent drawing
  • US9183021B2 patent drawing
  • US9183021B2 patent drawing

AI summary

A method and system for optimizing application code via transformation of calls made by the application code during runtime. A computer system loads the application code that has been intermediately compiled into bytecode. The computer system then compiles and executes the application code. During runtime, the application code makes a call from a call site to an implementation of an operation that returns a value to the application code. The computer system runs an implementer of the implementation and an agent that operates independently of a compiler. The agent receives a notification of the call, performs an analysis on the application code during runtime to determine whether the value is used by the application code, and optimizes the application code by transforming the call site based on a result of the analysis.