Densely Stored Strings Dynamic Encoding Memory Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Software programs face memory inefficiencies when dealing with long strings or numerous strings due to multi-byte encoding of complex characters, leading to increased memory usage.

Innovation Solution

A system that dynamically encodes characters using a private encoding that consumes less space than multi-byte public encoding, switching between encodings like UTF-8, UTF-16, and Latin-1 based on character content, allowing for efficient storage and retrieval while maintaining support for complex characters.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If multi-byte public encoding is used to support complex characters, then character encoding completeness is improved, but memory usage increases

Engineering Contradiction:
Improvecharacter encoding completenessVSAvoidmemory usage
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The patent applies local quality by using different encoding schemes for different parts of the string data. Specifically, it uses a first encoding (e.g., Latin-1) for ASCII characters and a second encoding (e.g., UTF-16) for complex characters, rather than applying a single encoding to the entire string. This allows memory-efficient storage for common characters while maintaining support for complex characters when needed.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent changes the encoding parameter dynamically based on the character content. It determines whether to use a compact encoding or a full-featured encoding based on the presence of complex characters, thereby adapting the memory usage parameter to the actual requirements of the data being stored.

Inventive Principle:
Principle #35Parameter changes

2Adaptability or versatility

If multi-byte public encoding is used for all characters, then support for complex characters is maintained, but storage density decreases

Engineering Contradiction:
Improvecomplex character supportVSAvoidstorage density
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The patent implements local quality by applying different encoding densities to different character types within the same string. ASCII characters are stored using a compact single-byte encoding, while complex characters are stored using a multi-byte encoding. This creates a heterogeneous storage structure that optimizes space usage while maintaining full character support.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent segments the string data into different encoding regions based on character type. It identifies and separates ASCII characters from complex characters, applying appropriate encoding to each segment. This segmentation allows the system to achieve high storage density for the majority of characters while preserving the ability to represent all Unicode characters.

Inventive Principle:
Principle #1Segmentation

3Quantity of substance

If compact single-byte encoding is used, then memory efficiency is improved, but ability to represent complex characters is lost

Engineering Contradiction:
Improvememory efficiencyVSAvoidcharacter representation capability
Core Design Contradiction:
Quantity of substanceVSAdaptability or versatility

Solution Approach 1:

The patent introduces dynamics by making the encoding scheme adaptable rather than static. The system dynamically selects between compact and full-featured encoding based on the actual character content of the string. This dynamic approach allows the system to achieve high memory efficiency for strings containing only ASCII characters while automatically switching to full Unicode support when complex characters are detected.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent creates a universal encoding system that can handle both simple and complex characters within a single string structure. By incorporating multiple encoding schemes and automatically selecting the appropriate one based on content, the system achieves multi-functionality, serving both memory-efficient storage and complete character representation needs.

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

4Quantity of substance

If encoding switching is implemented based on character content, then storage efficiency is improved, but system complexity increases

Engineering Contradiction:
Improvestorage efficiencyVSAvoidencoding management complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent applies self-service by enabling the string data itself to determine the appropriate encoding scheme. The system automatically detects the presence of complex characters and selects the appropriate encoding without requiring external intervention or complex management logic. This self-determining approach simplifies the overall system while achieving efficient storage.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent replaces complex mechanical encoding management with a more elegant solution based on encoding detection and automatic selection. Instead of requiring manual configuration or complex algorithms to determine encoding, the system uses straightforward detection of complex character presence to automatically select the appropriate encoding scheme, reducing overall system complexity.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Data Source

PatentUS9720666B2Densely stored strings
Publication Date: 2017.08.01 ORACLE INT CORP
  • US9720666B2 patent drawing
  • US9720666B2 patent drawing
  • US9720666B2 patent drawing

AI summary

The disclosed embodiments provide a system for densely storing strings within the memory of a software program. During operation, the system receives a set of characters to be stored in a string, wherein each character is encoded using a multi-byte public encoding. The system then stores the set of characters in the string at least in part by performing the following steps. The system determines whether every character of the set can be encoded using a first private encoding that consumes less space per character than the multi-byte public encoding. Responsive to determining that every character of the set can be encoded using the first private encoding, the system stores a particular value associated with the first private encoding in a particular field of the string. The system then stores the set of characters in the string in the first private encoding.