# US 8,789,030 B2 · Memoization from offline analysis

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,789,030 B2
- Document ID: US8789030B2
- Status: Granted
- Kind: B2
- Application number: 13/622,342
- Filed: 2012-09-18
- Published: 2013-03-21
- Granted: 2014-07-22
- Earliest claimed: 2012-09-18
- Assignees: Concurix Corporation
- Applicants: Concurix Corporation
- Inventors: Alexander G. Gounares; Ying Li; Charles D. Garrett
- Web page: https://patentgrep.com/patent/US8789030B2

## CPC

- G06F 8/443: {Optimisation}
- G06F 11/3428: {Benchmarking}
- G06F 11/3414: {Workload generation, e.g. scripts, playback}
- G06F 2201/865: Monitoring of software
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Memoization may be deployed using a configuration file or database that identifies functions to memorize, and in some cases, includes input and result values for those functions. The configuration file or database may be created by profiling target code and offline or otherwise separate analysis of the profiling results. The configuration file may be used by an execution environment to identify which functions to memorize during execution. The offline or separate analysis of the profiling results may enable more sophisticated analysis than could otherwise be performed in parallel with executing the target code, including historical analysis of multiple instances of the target code and sophisticated cost/benefit analysis.

## Claims

### Claim 1

A method performed by a computer processor, said method comprising:
receiving monitored parameters collected from executing a target executable code, said target executable code comprising a plurality of functions having input parameters and returning results;
analyzing said monitored parameters to identify a first function for memoization;
creating a configuration record comprising:
an identifier for said first function; and
a memoization indicator indicating that said first function is to be memoized during execution;
transmitting said configuration record to a target processor executing said target executable code.

### Claim 2 (depends on 1)

The method of claim 1, said monitored parameters comprising:
inputs processed by said first function; and
results returned by said first function.

### Claim 3 (depends on 2)

The method of claim 2, said configuration record further comprising:
a first input processed by said first function.

### Claim 4 (depends on 3)

The method of claim 3, said configuration record further comprising:
a first result returned by said first function.

### Claim 5 (depends on 4)

The method of claim 4, said monitored parameters comprising:
a measure of execution cost for said first function when processing said first input.

### Claim 6 (depends on 5)

The method of claim 5, said measure of execution cost being processing time.

### Claim 7 (depends on 5)

The method of claim 5, said measure of execution cost being number of instructions processed.

### Claim 8 (depends on 5)

The method of claim 5, said monitored parameters comprising a purity indicator, said purity indicator indicating whether said first function is free from side effects.

### Claim 9 (depends on 8)

The method of claim 8, said purity indicator being derived from static analysis of said target executable code.

### Claim 10 (depends on 8)

The method of claim 8, said purity indicator being determined from observations of execution of said target executable code.

### Claim 11 (depends on 1)

The method of claim 1, said monitored parameters being collected from a plurality of devices executing said target executable code.

### Claim 12 (depends on 11)

The method of claim 11, said plurality of devices executing said target executable code in parallel.

### Claim 13 (depends on 11)

The method of claim 11, a first device in said plurality of devices being executed by a first user and a second device in said plurality of devices being executed by a second user.

### Claim 14 (depends on 11)

The method of claim 11, said monitored parameters being anonymized prior to said receiving.

### Claim 15

A system comprising:
a computer processor;
an analyzer operating on said computer processor, said analyzer that:
receives monitored parameters collected from executing a target executable code, said target executable code comprising a plurality of functions having input parameters and returning results;
analyzes said monitored parameters to identify a first function for memoization;
creates a configuration record comprising:
an identifier for said first function; and
a memoization indicator indicating that said first function is to be memoized during execution;
a distribution mechanism that transmits said configuration record to a first processor that executes said target executable code with said configuration record.

### Claim 16 (depends on 15)

The system of claim 15, said distribution mechanism being a push mechanism that transmits updates of said configuration record.

### Claim 17 (depends on 15)

The system of claim 15, said distribution mechanism being a pull mechanism by which said first processor downloads said configuration record.

### Claim 18 (depends on 15)

The system of claim 15 further comprising:
a data collector that receives said monitored parameters from a client device.

### Claim 19 (depends on 18)

The system of claim 18, said data collector that further receives said monitored parameters from a plurality of client devices.

### Claim 20 (depends on 19)

The system of claim 19, said data collector that further stores said monitored parameters.

### Claim 21 (depends on 1)

The method of claim 1, said target executable code being an operating system.

### Claim 22 (depends on 1)

The method of claim 1, said target executable code being an execution environment in which applications are executed.

### Claim 23 (depends on 1)

The method of claim 1, said target executable code being an application.

### Claim 24 (depends on 1)

The method of claim 1, said configuration record being distributed in a file.

### Claim 25 (depends on 1)

The method of claim 1, said configuration record being distributed in a database format.

### Claim 26 (depends on 1)

The method of claim 1, said monitored parameters being collected from a first processor and said target processor being a different processor.

### Claim 27 (depends on 26)

The method of claim 26, said first processor and said target processor being on the same device.

### Claim 28 (depends on 27)

The method of claim 27, said first processor having a monitoring agent that transmits said monitored parameters and said target processor not having said monitoring agent.

### Claim 29 (depends on 26)

The method of claim 26, said first processor being on a first device and said target processor being on a second device.

### Claim 30 (depends on 29)

The method of claim 29, said first processor having a monitoring agent that transmits said monitored parameters.

### Claim 31 (depends on 30)

The method of claim 30, said target processor not having said monitoring agent.

### Claim 32 (depends on 1)

The method of claim 1, said configuration record further comprising:
an identifier for said first function and a first input, said configuration record indicating that said first function with said first input are to be memoized but said first function with a second input are not to be memoized.

### Claim 33 (depends on 1)

The method of claim 1, said memoization indicator being a binary indicator.

### Claim 34 (depends on 1)

The method of claim 1, said configuration record further comprising a variable memoization indicator, said variable memoization indicator indicating that said first function may be memoized for all sets of inputs.

### Claim 35 (depends on 34)

The method of claim 34, said configuration record further comprising a fixed memoization indicator, said fixed memoization indicator indicating that said first function may only be memoized for a set of inputs contained in said configuration record.

### Claim 36 (depends on 18)

The system of claim 18, said plurality of client devices each executing a separate instance of said target executable code.

### Claim 37 (depends on 36)

The system of claim 36, said plurality of client devices being managed by a first entity.

### Claim 38 (depends on 36)

The system of claim 36, said plurality of client devices being managed by a plurality of entities.

### Claim 39 (depends on 36)

The system of claim 36, said analyzer analyzing said monitored parameters received from said plurality of client devices to create said configuration record.

### Claim 40 (depends on 30)

The system of claim 30, said monitored parameters being gathered from a first monitoring agent operating on a second processor.

### Claim 41 (depends on 40)

The system of claim 40, said first processor not executing said first monitoring agent.

### Claim 42 (depends on 41)

The system of claim 41, said first processor being on a first device, said second processor being on said first device.

### Claim 43 (depends on 41)

The system of claim 41, said first processor being on a first device, said second processor being on a second device.

### Claim 44 (depends on 41)

The system of claim 41, said first processor and said second processor being the same processor.

### Claim 45 (depends on 15)

The system of claim 15, said analyzer that further:
analyzes said monitored parameters to identify a second function;
creates a second configuration record comprising:
an identifier for said second function; and
a memoization indicator indicating that said second function is not to be memoized during execution.

### Claim 46 (depends on 15)

The system of claim 15, said configuration record being distributed as a file.

### Claim 47 (depends on 15)

The system of claim 15, said configuration record being distributed as a database record.
