Data processing: software development – installation – and managem – Software program development tool – Translation of code
Reexamination Certificate
1999-01-26
2001-12-25
Powell, Mark R. (Department: 2762)
Data processing: software development, installation, and managem
Software program development tool
Translation of code
Reexamination Certificate
active
06334210
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates generally to a language processing system, a language processing method and a storage medium storing a language processing program. More particularly, the invention relates to a language processing system and a language processing method which can reduce a memory region necessary for profile information collection of a computer and can reduce overhead of the profile information collection upon program execution.
2. Description of the Related Art
For improving performance in execution of programs, it is quite effective to know behavior of programs on the basis of profile information. The profile information is information collected by dynamically monitoring times of execution, execution period of a particular portion, branching information and so forth. The profile information thus obtained is used as an analysis information of program. Optimization for improvement of execution speed and so forth is mainly performed on the basis of such profile information. The profile information is useful information enabling specific optimization of the program. Call pair information indicative of call frequency of caller/callee (caller side function/callee side function) in the program is one of such profile information.
Upon collecting profile information, particularly call pair information, there has been known a profile collecting method which reduces overhead cost in the profile information collection and make it constant, and enables calculation of the overhead. (see Japanese Unexamined Patent Publication No. Heisei 9(1997)-62544).
FIG. 10
is a block diagram showing a construction of the conventional profile information collecting system and
FIGS. 11A
,
11
B and
11
C are explanatory illustrations of a call pair information generating method in the system shown in FIG.
10
.
Discussion will be given hereinafter for conventional profile information collecting method with reference to
FIGS. 10 and 11A
,
11
B,
11
C. In a profile process inserting portion
110
shown in
FIG. 10
, when a function call instruction is present in a source program
140
, a source program containing a profiling process is generated by inserting a branching code to the profile information collection immediately before execution of the function call instruction. A compiling and program executing portion
120
executes compiling of the source program including the profile process. When profiling process is executed, a two-dimensional call pair information processing table shown in
FIG. 11A
is mapped with taking a callerID indicative of caller side function and a calleeID indicative of callee side function as argument to establish a linear call pair information storage table
160
shown in FIG.
11
C. Then, calling number of the call pair is incremented by 1.
f
(caller, callee)=[(caller+callee−1)*(calleer+callee−2)]/2+callee−1 (1)
In
FIGS. 11A
, ID
1
, ID
2
, ID
3
and ID
4
correspond main routine (labeled as “main”), a function (labeled as “func
1
”), a function (labeled as “func
2
”) and a function (labeled as “func
3
”), respectively, as shown in FIG.
11
B.
Upon end of program execution, in a profile information generating portion
130
, with taking a value mapped according to the foregoing equation (1) as index, number of times of calling per each relevant call pair is read out from the linear table of the call pair information storage table
160
. By recording the read out number of times of calling, a call pair information is output.
However, in the conventional profile information collecting method set forth above, in order to enable recording of number of times of calling for all call pair information in the program, necessary memory region has to be preliminarily reserved in a lump.
In this case, in a mutual relationship of all functions contained in the program, since it is possible to cause calling relationship, a two-dimensional table which can store number of times of calling for all possible combination (including call for the function in question per se) of all functions. Therefore, when number of functions contained in the program is large, a huge amount of capacity is required as a region for the table storing call pairs.
Furthermore, a long period is required for initializing process for such large region. Also, it takes a long period for mapping the two-dimensional call pair information storing table mapped in terms of both of the caller and callee in the linear call pair information storage table. Therefore, an overhead in profile process upon execution of the program becomes large. Also, it becomes necessary to derive (map) the index even upon outputting the call pair information to take a long period for such process to further increase the overhead in profile process upon program execution.
SUMMARY OF THE INVENTION
It is an object of the present invention to provide a language processing system and a language processing method which can make a memory region of a table to be used smaller upon collecting profile information in program execution.
Another object of the present invention is to provide a language processing system and a language processing method which can reduce an overhead due to profile process upon program execution as much as possible.
According to the first aspect of the invention, a language processing system collecting a profile information during execution of a program, comprises
profile process inserting means for detecting function call in a source program by static analysis, inserting a branching code to profile process per function call detected in the source program and setting a region of a table storing number of times of corresponding function call per an identification number of call pair in function call, and
program executing means for executing translation of the source program inserted the branching code to the profiling process, and incrementing number of function call of the table with taking the identification number corresponding to kind of call pair in corresponding function call, as index, when the branching code to the inserted profiling process is present.
In the preferred construction, the language processing system further comprises profile information outputting means for generating information of number of times of call per kind of call pair by reading out number of times of function call of the table per identification number.
In another preferred construction, the language processing system further comprises a database storing call pairs in the function call and identification number thereof, the profile process inserting means makes judgment whether the call pair in the detected function call is registered in the database and, if not, stores the call pair in the function call with adding the identification number per kind.
In another preferred construction, the language processing system further comprises a database storing call pairs in the function call and identification number thereof, the profile process inserting means makes judgment whether the call pair in the detected function call is registered in the database and, if not, stores the call pair in the function call with adding the identification number per kind, and which further comprises profile information outputting means for generating information of times of call per kind of call pair by reading out number of function call of the table per identification number of the data base.
In another preferred construction, the profile process inserting means performs initialization process upon setting of a region of the table.
In another preferred construction, the profile process inserting means sets corresponding to a maximum number of the identification number of a region of the table.
According to the second aspect of the invention, a language processing method collecting a profile information during execution of a program, comprises
step of detecting function call in a source program by static analysis, inserting a branching code
Miura Takayuki
Ono Rika
Foley & Lardner
Holmes Michael B.
NEC Corporation
Powell Mark R.
LandOfFree
Language processing system and language processing method... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Language processing system and language processing method..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Language processing system and language processing method... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2590136