Pre-computed Switching Code for Use Profile Transitions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Dynamic optimization of code during runtime incurs overhead, and existing methods for switching between use profiles are inefficient, as they require significant processing power and are not always predictable in performance.

Innovation Solution

A method and system for pre-computing switching code between use profiles, allowing for efficient switching by generating optimized versions of application code offline and storing them in a profile matrix, which can be quickly retrieved and executed at runtime, minimizing overhead and preserving processing state.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If dynamic optimization of code is performed during runtime using on-line profiling, then code performance is improved for specific use profiles, but execution overhead increases

Engineering Contradiction:
Improvecode performanceVSAvoidexecution overhead
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent pre-computes switching code between use profiles offline and stores it in a profile matrix data structure. This preliminary preparation eliminates the need for runtime compilation or complex on-line profiling, allowing instant switching between optimized code versions for different use profiles with minimal overhead.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If separate optimized code versions are created for multiple use profiles, then performance for each specific use case is maximized, but code complexity and switching overhead increase

Engineering Contradiction:
Improveperformance for specific use casesVSAvoidcode complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent creates multiple copies of optimized code for different use profiles and stores them in a profile matrix. Each copy is pre-optimized for a specific use profile, and the system can quickly switch between them by retrieving the appropriate copy from the matrix without complex transformation or compilation processes.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The profile matrix serves as an intermediary data structure that stores pre-computed switching code between use profiles. This matrix acts as a lookup table that simplifies the switching process, eliminating the need for complex runtime analysis or compilation while enabling fast transitions between different optimized code versions.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Adaptability or versatility

If existing methods for switching between use profiles are used, then adaptability to different use cases is achieved, but processing power is consumed and performance predictability decreases

Engineering Contradiction:
Improveadaptability to different use casesVSAvoidprocessing power consumption
Core Design Contradiction:
Adaptability or versatilityVSPower

Solution Approach 1:

All switching code between use profiles is pre-computed offline and stored in the profile matrix. During runtime, the system simply retrieves the pre-computed switching code from the matrix based on the current and target use profiles, eliminating the need for complex runtime processing or compilation while maintaining full adaptability between different use cases.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10452428B2Application execution with optimized code for use profiles
Publication Date: 2019.10.22 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US10452428B2 patent drawing
  • US10452428B2 patent drawing
  • US10452428B2 patent drawing

AI summary

Method and system are provided for software application execution including switching between optimized code for use profiles. The method includes: accessing an application having multiple executables for the same function for multiple use profiles. The method includes: executing code for a first use profile; receiving a prompt to change to a second use profile; suspending the execution of the code for the first use profile; retrieving switching code from a pre-computed data structure, wherein the switching code is for carrying out operations to transfer from executing code for a first use profile to executing code for a second use profile; performing the operations of the switching code; and resuming executing the application by executing code for the second use profile.