摘要:
An executable program file is produced, which has a reduced run-time image size and improved performance. Profiling information is obtained from an original executable program. Both the original executable code and the profiling information are used to generate the new executable program file. All frozen basic blocks are grouped together and relocated in a separate non-loading module. Each control transfer to and from the relocated code is replaced by an appropriate interrupt. An interrupt mechanism invokes an appropriate handler for loading the relevant code segments from the non-loading module containing the targeted basic blocks. Since the relocated basic blocks are frozen, the time-consuming interrupt mechanism is rarely if ever invoked during run-time, and therefore, has no significant effect on performance.
摘要:
A machine-independent representation of computer instructions can serve as a standard for machine instruction description that is suitable for post-link transformation tools, such as post-link optimizers, and for education of users. In one embodiment the instructions are presented as expression trees in a XML file. An optimizer operates on the transformed code representations, after which optimized code is re-transformed into machine-readable code.
摘要:
A machine-independent representation of computer instructions can serve as a standard for machine instruction description that is suitable for post-link transformation tools, such as post-link optimizers, and for education of users. In one embodiment the instructions are presented as expression trees in a XML file. An optimizer operates on the transformed code representations, after which optimized code is re-transformed into machine-readable code.
摘要:
Methods and systems for computer program optimization utilize function cloning in program code, such as post-linked code. Each function call is directed to a different cloned version of the called function. Conventional profiling methods such as hardware event sampling, basic block profiling, and edge profiling may then be applied to the modified program code to obtain call path-based, clone-specific profile data. The profile data can be further exploited to optimize the program code.
摘要:
Methods and systems for computer program optimization utilize function cloning in program code, such as post-linked code. Each function call is directed to a different cloned version of the called function. Conventional profiling methods such as hardware event sampling, basic block profiling, and edge profiling may then be applied to the modified program code to obtain call path-based, clone-specific profile data. The profile data can be further exploited to optimize the program code.
摘要:
Multiple versions of data on different sets of machines allow a system to degrade gracefully even when experiencing excessive failures. When excessive failures cause the latest versions to be unavailable, the system becomes degraded, but still offers an old version if available. A most recent coherent set of the available older versions is found and provided. The degree of degradation increases gradually as the system experiences more and more failures. Graceful degradation is desirably complementary to fault tolerance.
摘要:
Entries are cached in a function cache by statically assigning a primary key to each cache entry, and first grouping entries having identical primary keys, and dynamically assigning a secondary key to each cache entry, and then second grouping entries in each primary key group into sub-groups according to their secondary keys. The function cache is first accessed with a particular primary key to get the primary key group. Second, the primary key group is accessed with a particular secondary key to get a sub-group, and third, the sub-group is accessed with the same particular secondary key to get a matching cache entry.
摘要:
A software system is defined by a tree of system models which are written in a functional language. During a build of the software system, the functions are interpreted and the results of the expensive expressions are cached. Each function is examined before interpretation to see if it has been evaluated before. If a function has already been evaluated, the cached result is retrieved by the evaluator and the time which would have been spent re-evaluating the function is saved.
摘要:
Multiple versions of data on different sets of machines allow a system to degrade gracefully even when experiencing excessive failures. When excessive failures cause the latest versions to be unavailable, the system becomes degraded, but still offers an old version if available. A most recent coherent set of the available older versions is found and provided. The degree of degradation increases gradually as the system experiences more and more failures. Graceful degradation is desirably complementary to fault tolerance.
摘要:
In a computerized method, a computer program is analyzed while the program is interpreted. The program is expressed in a first memory as input values and functions. Some of the input values are complex values which can have a plurality of component values. Each function operates on combinations of the input values and the functions of the program. The program is interpreted in a processor connected to the first memory. The processor is also connected to a second memory to store result values produced during the interpretation. Selected input values, components of the complex values, and functions are named only if the selected values, components, and functions are necessary to produce a selected result value. For each function of the program, the function which is interpreted, the input values on which the function depends, and the result value produced by the function during interpretation, are recorded in the second memory to dynamically perform a precise dependency analysis of the program.