Developers tool for object-oriented programming |
| The present invention fulfills this need in the art by providing a software developer's tool to ... |
|
Method and apparatus for storing templates in a component system |
| The present invention provides a component system in which a number of base applications, i.e. ... |
|
Method and apparatus for executing tasks by following a linked list of memory packets |
| OF THE EMBODIMENT FIG. 1 is a high level block diagram of a task flow computing machine 10. M... |
|
Optical fiber bus controller |
| FIG. 1 illustrates system 100 which implements the invention. System 100 comprises a number of ... |
|
Low-latency real-time dispatching in general purpose multiprocessor systems |
| The present invention provides a method of real-time dispatching in a general purpose ... |
|
dbX: a persistent programming language model |
| The persistent programming language model described herein solves the problem of seamlessly ... |
|
Data processor and data processing system |
| The inventor has studied for speeding up of matrix operation and inner product operation employing ... |
|
Tape recorder having cassette loading apparatus |
| Accordingly, it is an object of this invention to provide a tape recorder having a cassette loading ... |
|
Laser capable of producing a frequency standard |
| I claim: 1. A laser capable of producing a stable frequency standard comprising means for ... |
|
Logic element |
| It is the object of the invention to provide a gate circuit of the type above described which ... |
|
|
Method and apparatus for dynamically optimizing an executable computer program using input data
| Details |
Inventors: Ravichandran, Hari K.;
Assignee: Sun Microsystems, Inc. (Palo Alto, CA)
Primary Examiner: Hafiz; Tariq R.
Assistant Examiner: Khatri; Anil
Attorney, Agent or Firm: Sierra Patent Group, Ltd.
The present invention provides a method and apparatus for using input data to optimize a computer program. Initially, the computer program is divided into one or more logical units of code. Next, a CPU simulator is used to simulate execution of each logical unit using the input data. The output from the simulation is used to generate a first optimization metric value and corresponding state information for each logical unit. In one embodiment, the first optimization metric value and corresponding state information are stored in a first optimization vector. Using well known optimization techniques, the instructions within each logical unit are optimized iteratively until additional optimizations would result in very small incremental performance improvements. A second simulation is performed using the same input data except that this time the optimized logical units are used. This second simulation is used to measure how much the optimizer has improved the code. The output from the second simulation is used to generate a second optimization metric value and corresponding state information. The degree of optimization is determined by determining the difference between the first optimization metric value and the second optimization metric value for the sum of the logical units. If the difference is less than a predetermined threshold value, additional optimization iterations would provide little code improvement and thus the optimization is complete. However, if the difference is greater than or equal to the predetermined threshold value, additional optimizations would likely improve performance. In the latter case, the present invention would repeat the optimization process described above. |
|
DETAILED DESCRIPTION According to principles of the invention, a method and apparatus for using input data to optimize a computer program for execution on a target computer is provided. Initially, the computer program is divided into one or more logical units of code. Next, a CPU simulator is used to simulate execution of each logical unit using the input data. The output from the simulation is used to generate a first optimization metric value and corresponding state information for each logical unit. In one embodiment, the first optimization metric value and corresponding state information are stored in a first optimization vector. Using well known optimization techniques, the instructions within each logical unit are optimized iteratively using the first optimization metric value and corresponding state information. The iterations continue until additional optimizations would result in very small incremental performance improvements and a diminishing return in performance compared with processing expended. A second simulation is performed using the same input data except that this time the optimized logical units are used. This second simulation is used to measure how much the optimizer has improved the code. The output from the second simulation is used to generate a second optimization metric value and corresponding state information. The degree of optimization is determined by determining the difference between the first optimization metric value and the second optimization metric value. If the difference is less than a predetermined threshold value, additional optimization iterations would provide little code improvement and thus the optimization is complete. However, if the difference is greater than or equal to the predetermined threshold value, additional optimizations would likely improve performance. In the latter case, the present invention would repeat the optimization process described above.
|
| Related patents |
|
|
Method and apparatus for profiling indirect procedure calls in a computer program
As discussed in the Background section, the generation of profile data for direct procedure calls is relatively straightforward. However, the generation of profile data ...
|
|
|
Profile driven optimization of frequently executed paths with inlining of code fragment (one or more lines of code from a child procedure to a parent procedure)
Unfortunately, traditional inlining is often unable to substantially reduce the procedure call overhead of a program where to do so would be highly advantageous. In ...
|
|
|
Method of, system for, and computer program product for providing efficient utilization of memory hierarchy through code restructuring
The invention disclosed herein comprises a method of, a system for, and an article of manufacture for providing code restructuring based on profiling information and ...
|
|
|
Software reconfiguration engine
The present invention relates generally to computer system software development and maintenance. More particularly, the invention relates to a reconfiguration system for ...
|
|
|
Automated validation and verification of computer software
The present invention discloses a method and apparatus for automatic validation and verification of computer software. The software to be tested is first retrieved from ...
|
|
|
System for generating test data
A system for generating test data that overcomes these and other problems has a data structure definition system, a message creation system, and an execution system. The ...
|
|
|
Diabetes management
According to a first aspect of the present invention there is provided a method of predicting the level of a glycosylated haemoglobin component in a patient's blood ...
|
|
|
Method and apparatus for code translation optimization
OF PREFERRED EMBODIMENTS Generally, the present invention provides a method of optimizing software translation. Specifically, when a microprocessor accesses a block of ...
|
|
|
Method and computer system for loading objects
To achieve the foregoing objectives, the present invention executes the following steps in a computer system loading an object-oriented program including a plurality of ...
|
|
|
Graphical design processing apparatus for assessing and modifying design of components
It is therefore an object of the present invention to provide a graphic data processing apparatus which permits even an unskilled or unexperienced designer or production ...
|
|
|