Delayed Resource Instantiation in Markup-Based Systems

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

XML/XAML-based platforms face inefficiencies in storage and loading times due to the instantiation of entire resource dictionaries at once, leading to increased memory usage and application startup times, even though not all resources are immediately needed.

Innovation Solution

Implementing techniques for delayed loading and instantiation of resources in a resource dictionary, where key information is read at load-time and values are loaded only when requested by the application, using a modified binary representation that separates binary key records from value records, allowing for on-demand instantiation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the entire resource dictionary is instantiated at load-time, then all resources are immediately available for use, but memory usage increases and application startup time increases

Engineering Contradiction:
Improveresource availabilityVSAvoidmemory usage
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The resource dictionary is segmented into key records and value records that are stored separately in the binary representation. Key records contain only the minimal information needed to identify and locate resources, while value records contain the actual resource data. This segmentation allows the system to load lightweight key records immediately while deferring loading of larger value records until they are actually needed, thus reducing initial memory usage while maintaining resource availability.

Inventive Principle:
Principle #1Segmentation

2Reliability

If the entire resource dictionary is instantiated at load-time, then all resources are immediately available for use, but application startup time increases

Engineering Contradiction:
Improveresource availabilityVSAvoidapplication startup time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The binary representation is prepared in advance with key records that contain pre-computed location information (offsets) pointing to value records. This preliminary structuring enables the runtime system to quickly locate and load only the necessary value records on-demand, rather than loading everything upfront or searching through the entire resource dictionary during runtime.

Inventive Principle:
Principle #10Preliminary action

3Quantity of substance

If key information is read at load-time and values are loaded on-demand, then memory usage is reduced, but the system complexity increases

Engineering Contradiction:
Improvememory usageVSAvoidsystem complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

Key records serve as intermediary structures that bridge the gap between the binary representation and the actual resource values. Each key record contains an identifier and an offset that mediates the lookup process, allowing the system to efficiently locate and load value records on-demand without requiring complex data structures or search algorithms.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS7823063B2Delayed loading and instantiation of resources defined in markup
Publication Date: 2010.10.26 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7823063B2 patent drawing
  • US7823063B2 patent drawing
  • US7823063B2 patent drawing

AI summary

Techniques for delayed loading and instantiation of resources in a resource dictionary are provided. These techniques can be used to delay or defer the loading of values (or “value records”) into the resource dictionary until the values are actually needed or requested by an application.