Static Performance Analysis Service for Code Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Large software applications often introduce performance issues due to calls that consume substantial computing resources, such as network I/O, disk I/O, and database transactions, which can be difficult to identify during code review and become apparent only at runtime, impacting the entire application.

Innovation Solution

A static performance analysis service that scans call graphs to score nodes based on resource consumption, adjusts scores for repetitive actions, and generates recommendations to optimize code, helping developers address potential performance issues before deployment.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If code reuse and parallel development are encouraged, then development time and cost are reduced, but performance issues become more difficult to identify and manage

Engineering Contradiction:
Improvedevelopment timeVSAvoidperformance issue detection
Core Design Contradiction:
Loss of timeVSDifficulty of detecting and measuring

Solution Approach 1:

The system performs static analysis of code before it is executed, identifying potential performance issues during the development phase rather than at runtime. By analyzing call graphs and resource consumption patterns in advance, the system enables developers to address performance problems before they manifest in production, resolving the contradiction between rapid development and performance detection.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If runtime testing is used to identify performance issues, then actual performance problems are detected, but issues are found too late in the development cycle

Engineering Contradiction:
Improveperformance problem detectionVSAvoiddevelopment cycle time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs analysis before runtime execution by constructing call graphs and evaluating resource consumption patterns statically. This preliminary analysis identifies performance issues during code review or commit processes, allowing developers to fix problems early in the cycle rather than discovering them during runtime testing or production operations.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system provides feedback to developers about potential performance issues in their code, enabling iterative improvement during the development process. By analyzing call graphs and identifying high-resource consumption patterns, the system gives real-time guidance that allows developers to optimize code before it is deployed, shortening the development cycle while maintaining reliability.

Inventive Principle:
Principle #23Feedback

3Reliability

If comprehensive code analysis is performed, then performance issues are identified early, but analysis time and computational resources increase

Engineering Contradiction:
Improveperformance issue identificationVSAvoidanalysis time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system extracts only the critical information needed for performance analysis from the entire codebase by focusing on call graphs and resource consumption patterns. Rather than analyzing every line of code uniformly, the system identifies and analyzes specific call paths that involve substantial resource consumption, reducing analysis time while maintaining effective performance issue detection.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS11269604B1Static performance analysis service
Publication Date: 2022.03.08 CITRIX SYSTEMS INC
  • US11269604B1 patent drawing
  • US11269604B1 patent drawing
  • US11269604B1 patent drawing

AI summary

A system and method for analyzing a performance of computer code. A method includes scanning a graph to identify a plurality of calls to executable code, individual nodes of the graph representing different calls to be taken by the executable code; determining a score for individual nodes of the graph based on resources required to perform the call represented by that node, the call being one that consumes substantial resources of a computing system to accomplish an operation; adjusting the score of individual nodes that are associated with repetitive action nodes in the graph; and generating recommendations to improve performance of the computer code based on scores indicative of substantial resource consumption.