Polymorphic Dispatch Logic for Graph Algorithm Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing graph analysis techniques face performance overhead and optimization limitations when using polymorphic APIs for different graph types, as they introduce runtime overhead and restrict domain-specific language compiler optimizations due to generic graph types lacking metadata, leading to error-prone and costly manual redesigns for specialized algorithms.

Innovation Solution

Generating polymorphic dispatch logic during compilation to dynamically switch between specialized implementations of graph algorithms tailored to specific graph subtypes, such as directed or undirected graphs, allowing for runtime optimization and performance enhancement by detecting the graph subtype and invoking the appropriate implementation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If manual redesign of specialized algorithms for specific graph types is performed, then performance optimization is achieved, but code duplication and dual maintenance costs increase

Engineering Contradiction:
ImproveperformanceVSAvoidcode duplication and maintenance
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent creates a unified graph algorithm framework that can handle multiple graph types (directed, undirected, weighted, unweighted) through a single polymorphic API. The same algorithm implementation can process different graph subtypes by detecting their properties at runtime and applying appropriate optimizations, eliminating the need for separate specialized implementations for each graph type while maintaining high performance.

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

2Device complexity

If a polymorphic API is used for all graph types, then code duplication is reduced, but runtime overhead increases

Engineering Contradiction:
Improvecode duplicationVSAvoidruntime overhead
Core Design Contradiction:
Device complexityVSLoss of time

Solution Approach 1:

The patent performs graph subtype detection and optimization selection during compilation rather than at runtime. The compiler analyzes the graph type metadata available in the source code and pre-generates optimized dispatch logic for specific graph subtypes. This shifts the optimization decision from runtime to compiletime, eliminating runtime overhead while maintaining the benefits of a unified polymorphic API.

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If a generic graph type is used, then adaptability to different graph types is maintained, but compiler optimization capabilities are limited

Engineering Contradiction:
Improveadaptability to graph typesVSAvoidcompiler optimization
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent enables the compiler to recognize and optimize for specific graph subtype properties (directed/undirected, weighted/unweighted) by providing type metadata in the source code. The compiler can then apply localized optimizations tailored to each graph subtype's characteristics, such as eliminating unnecessary direction checks for undirected graphs or optimizing edge traversal for directed graphs, while still maintaining a unified generic interface.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10585945B2Methods of graph-type specialization and optimization in graph algorithm DSL compilation
Publication Date: 2020.03.10 ORACLE INT CORP
  • US10585945B2 patent drawing
  • US10585945B2 patent drawing
  • US10585945B2 patent drawing

AI summary

Techniques herein generate, such as during compilation, polymorphic dispatch logic (PDL) to switch between specialized implementations of a polymorphic graph algorithm. In an embodiment, a computer detects, within source logic of a graph algorithm, that the algorithm processes an instance of a generic graph type. The computer generates several alternative implementations of the algorithm. Each implementation is specialized to process the graph instance as an instance of a respective graph subtype. The computer generates PDL that performs dynamic dispatch as follows. At runtime, the PDL receives a graph instance of the generic graph type. The PDL detects which particular graph subtype is the graph instance. The PDL then invokes whichever alternative implementation that is specialized to process the graph instance as an instance of the detected particular graph subtype. In embodiments, the source logic is expressed in a domain specific language (DSL), e.g. for analysis, traversal, or querying of graphs.