Method and apparatus for optimization of the performance of...

Data processing: software development – installation – and managem – Software program development tool – Translation of code

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C717S164000, C717S166000

Reexamination Certificate

active

06718543

ABSTRACT:

TECHNICAL FIELD
The invention relates in general to computer software, and in particular to improving the efficiency of repeated execution of established program modules.
BACKGROUND
Application programs are generally built from software components comprising routines within libraries. These routines may be used and re-used as often as a particular application program requires. The program modules may be stored separately from the application program in shared libraries or in archive libraries within the application program.
Shared libraries generally contain routines which may be potentially be accessed by a number of different application programs. The routines are generally sufficiently modular that they may be used with a range of different application programs and operate compatibly with all of them. Examples of such program modules include sine and cosine functions among other standard mathematical operations usable by a variety of application programs.
Shared libraries offer the advantage of occupying less disk space and using less RAM at run-time than if the various libraries were initially included in the various main application programs. Further, program modules in shared libraries may be updated and improved independently of the application programs which make calls to the shared libraries. In this manner, the operation of programs calling the updated routines may be improved without changing the calling program.
The application programs and the various libraries are generally compiled separately. In order for the application programs to call the libraries or routines contained therein at run-time, link tables are established in both the application programs and the libraries. Generally, compilation of the shared library routines generate relocatable files. For the routine to be executed at run-time, a link table in the calling program or application program must be filled with information indicating the actual memory location of the desired library or routine. Generally, any call to a shared library routine involves loading the routine's address from the linkage table and branching to this address, which is generally time consuming. Accordingly, routines in shared libraries generally execute more slowly than equivalent routines initially incorporated into the application program. In addition to the link table requirements, compile time optimizations between the main application program code and the shared library routine code are generally not available since the routines are compiled separately. This unavailability of compile time optimizations tends to add the execution speed disadvantage of shared library routines.
Another way to store commonly used program modules is to link them directly with the application program. Routines stored in an archive library of an application program are generally combined with the application program thereby forming a single self-contained program. Employing a single program with all routines included generally provides the application program with all required address information for the archived routines thereby obviating the need for the creation of linking tables and the need to load addresses from this table for each library routine call. Generally, a further benefit arises from the availability of compile time optimizations when using libraries archived within the application program which are generally not available when the archive libraries and application program are located in independent files and are compiled independently.
Application programs with archived libraries therefore generally execute more rapidly than an application which makes calls to shared libraries. Archive libraries however, generally occupy more disk space than shared libraries since each library will generally be stored along with each application program which places the library in its archive. Programs with archive libraries also generally require more RAM at run-time than programs employing shared libraries. Furthermore, shared libraries generally present the benefit of modularity. Specifically, shared libraries may be updated independently of the application programs which call them. In order to update a library archived within an application program, the entire program would generally have to be relinked with the new library. Accordingly, in the prior art, the user is presented with a choice between a modular shared routine which takes up little disk space but executes slowly and an archived routine which takes up more disk space but executes rapidly.
Therefore, there is a need in the art for re-usable library routines to execute rapidly while minimizing the demands on disk space and RAM memory during run-time.
SUMMARY OF THE INVENTION
These and other objects, features and technical advantages are achieved by a system and method which copies selected shared library routines into an original application program to create a new executable, in the form of an optimized application program, thereby providing for more rapid execution of the combination of original application code and the copied shared library routines. Preferably, system behavior with respect to the shared libraries is preserved when employing the present invention. Where several versions of a shared library exist on a computer system and a particular application program requires one specific version among the several versions, an application program optimized according to the mechanism of the present invention preferably selects the same specific version of the shared library as the original unoptimized version.
In a preferred embodiment, the inventive system and method preferably preserve an original version of the application program. The inventive system and method may then determine, based on the needs of a particular application, whether the new or original application program is best suited for the task. If a task does not require the incorporated shared library routines, the original application program will preferably be employed. Where a task requires one or more library routines which have been copied into an optimized program, the optimized application program will be employed.
As used herein, the term “incorporating” refers to a process of copying a shared library or a routine within a shared library into an original application program and re-linking the combination of the original application program code and the copied shared library code to produce a new executable to be known as an optimized version of that application program. The term “code of interest” applies to code in the shared libraries which is a candidate for being copied or incorporated into a calling application program because such code satisfies one or more factors favoring such incorporation.
Preferably, various different application programs may be optimized, enabling various different optimized application programs, corresponding to different original application programs, to co-exist on the system at any one time. Further, a single original application program may be optimized differently by copying different selections of shared libraries or shared library routines along with the original application program code, thereby enabling a number of different optimized versions of the same original application program to co-exist in the system at any one time. Although different versions of an optimized program may co-exist within an overall computer system, where two optimized programs differ only in the respect that one of the programs has more recent versions of certain library routines copied, the program with the outdated libraries will preferably be deleted in order to preserve disk space on the system.
Generally, while copying shared library routines into application programs causes the routines to execute more rapidly, such copying also generally occupies more disk space and more RAM at run-time. Copying no routines at all would generally present no burden on RAM and disk space but would also generally cause no improvement in execution speed. On the other hand, copying an excessive numbe

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Method and apparatus for optimization of the performance of... does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Method and apparatus for optimization of the performance of..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and apparatus for optimization of the performance of... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-3210713

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.