Automatic caching of partial results while editing software
First Claim
1. A computer-implemented method to instrument a software program with automatic caching of results, the method comprising:
- at a cache point identifying component executed by a processor, receiving a software program including a chain of actions that have been written by an editing user;
automatically identifying and inserting a cache point between actions in the chain of actions in the software program,the cache point indicating a location where data that has been gathered or computed can be cached to avoid subsequent gathering or computation of the same data, where the cache point has not been previously identified as a potential cache point and the cache point is configured to persist across a series of execution phases;
at a program instrumenting component executed by the processor, instrumenting the software program to add caching logic that checks for and stores cached data at the location indicated by the cache point;
storing the instrumented software program with the caching logic at the cache point in memory associated with the processor;
at a program executing component executed by the processor, during a first execution phase, executing the instrumented software program in the virtual machine,wherein the execution of the instrumented software program includes;
compiling the instrumented software program; and
running a plurality of actions in the chain of actions, wherein a particular action in the plurality of actions includes caching data based on the caching logic in a cache results store;
receiving an edit of the instrumented software program, the edit generated responsive to user input; and
executing the edited software program during a second execution phase;
wherein the execution of the edited software program includes;
recompiling the edited software program;
rerunning a portion of the plurality of actions in the edited software program;
determining that the cached data corresponding to the particular action is to be retrieved from the cache results store rather than recomputed;
in response to determining that the cached data is to be retrieved, skipping the particular action corresponding to the cached data in the plurality of actions and retrieving the cached data while rerunning the remainder of the plurality of actions.
2 Assignments
0 Petitions
Accused Products
Abstract
An automatic caching system is described herein that automatically determines user-relevant points at which to incrementally cache expensive to obtain data, resulting in faster computation of dependent results. The system can intelligently choose between caching data locally and pushing computation to a remote location collocated with the data, resulting in faster computation of results. The automatic caching system uses stable keys to uniquely refer to programmatic identifiers. The system annotates programs before execution with additional code that utilizes the keys to associate and cache intermediate programmatic results. The system can maintain the cache in a separate process or even on a separate machine to allow cached results to outlive program execution and allow subsequent execution to utilize previously computed results. Cost estimations are performed in order to choose whether utilizing cached values or remote execution would result in a faster computation of a result.
13 Citations
18 Claims
-
1. A computer-implemented method to instrument a software program with automatic caching of results, the method comprising:
-
at a cache point identifying component executed by a processor, receiving a software program including a chain of actions that have been written by an editing user; automatically identifying and inserting a cache point between actions in the chain of actions in the software program, the cache point indicating a location where data that has been gathered or computed can be cached to avoid subsequent gathering or computation of the same data, where the cache point has not been previously identified as a potential cache point and the cache point is configured to persist across a series of execution phases; at a program instrumenting component executed by the processor, instrumenting the software program to add caching logic that checks for and stores cached data at the location indicated by the cache point; storing the instrumented software program with the caching logic at the cache point in memory associated with the processor; at a program executing component executed by the processor, during a first execution phase, executing the instrumented software program in the virtual machine, wherein the execution of the instrumented software program includes; compiling the instrumented software program; and running a plurality of actions in the chain of actions, wherein a particular action in the plurality of actions includes caching data based on the caching logic in a cache results store; receiving an edit of the instrumented software program, the edit generated responsive to user input; and executing the edited software program during a second execution phase; wherein the execution of the edited software program includes; recompiling the edited software program; rerunning a portion of the plurality of actions in the edited software program; determining that the cached data corresponding to the particular action is to be retrieved from the cache results store rather than recomputed; in response to determining that the cached data is to be retrieved, skipping the particular action corresponding to the cached data in the plurality of actions and retrieving the cached data while rerunning the remainder of the plurality of actions. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A computer system for automatic caching of partial results while editing software, the system comprising:
-
a processor and associated memory; a cache point identifying component executed by the processor to; receive a software program including a chain of actions that have been written by an editing user; automatically identify and insert a cache point between actions in the chain of actions in the software program, the cache point indicating a location where data that has been gathered or computed can be cached to avoid subsequent gathering or computation of the same data where the cache point has not been previously identified as a potential cache point and the cache point is configured to persist across a series of execution phases; a program instrumenting component executed by the processor to; instrument the software program to add caching logic that checks for and stores cached data at the location indicated by the cache point; store the instrumented software program with the caching logic at the cache point in the memory; a program executing component executed by the processor to; during a first execution phase, execute the instrumented software program in the virtual machine, wherein the execution of the instrumented software program includes; compiling the instrumented software program; and running a plurality of actions in the chain of actions, wherein a particular action in the plurality of actions includes caching data based on the caching logic in a cache results store; receive an edit of the instrumented software program, the edit generated responsive to user input; and execute the edited software program during a second execution phase; wherein the execution of the edited software program includes; recompiling the edited software program; rerunning a portion of the plurality of actions in the edited software program; determining that the cached data corresponding to the particular action is to be retrieved from the cache results store rather than recomputed; in response to determining that the cached data is to be retrieved, skipping the particular action corresponding to the cached data in the plurality of actions and retrieving the cached data while rerunning the remainder of the plurality of actions. - View Dependent Claims (14, 15, 16, 17, 18)
-
Specification