You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Georgi Kodinov 097c7b38c8 Bug #45287: phase 2 : 5.0 64 bit compilation warnings 17 years ago
..
.cvsignore Import changeset 26 years ago
CMakeLists.txt CMakeLists.txt, README, configure.js 18 years ago
Makefile.am my_strtoll10-x86.s: 19 years ago
dbug.c Bug #45287: phase 2 : 5.0 64 bit compilation warnings 17 years ago
dbug_add_tags.pl added DBUG_ENTER/RETURN tags, dbug_add_tags.pl bugfix 23 years ago
dbug_analyze.c dbug/dbug_analyze.c : Avoid the unresolved symbol "my_thread_global_init()" 19 years ago
dbug_long.h dbug: DBUG_EXECUTE_IF macro, build user manual automatically, document all features 21 years ago
doinstall.sh Import changeset 26 years ago
example1.c document DBUG_OUTPUT() 21 years ago
example2.c document DBUG_OUTPUT() 21 years ago
example3.c document DBUG_OUTPUT() 21 years ago
factorial.c Bug#26243 mysql command line crash after control-c 18 years ago
install.sh Import changeset 26 years ago
main.c document DBUG_OUTPUT() 21 years ago
mklintlib.sh Import changeset 26 years ago
monty.doc monty.doc: 21 years ago
my_main.c Several fixes revelaled by Intel compiler. 20 years ago
qmake.cmd Import changeset 26 years ago
readme.prof Import changeset 26 years ago
sanity.c Changed to use my_global.h 24 years ago
user.r Bug #45286: compilation warnings on mysql-5.0-bugteam on MacOSX 17 years ago
vargs.h Import changeset 26 years ago

readme.prof

Hi,

I'm sending you the modifications I made to your Dbug routines to
allow profiling in a (relatively) machine independent fashion.
I use your Dbug routines fairly extensively. Unfortunately, it's
a royal pain to have to keep profiled versions of various libraries
around. The modifications allow profiling without the need for this.

How it works.
------------

Basically, I just added code in the dbug routines to write out a file
called dbugmon.out (by default). This is an ascii file containing lines
of the form:

<function-name> E <time-entered>
<function-name> X <time-exited>

A second program (analyze) reads this file, and produces a report on
standard output.

Profiling is enabled through the `g' flag. It can take a list of
procedure names for which profiling is enabled. By default, it
profiles all procedures.

The code in ``dbug.c'' opens the profile file for appending. This
is in order that one can run a program several times, and get the
sum total of all the times, etc.

The only system dependent part that I'm aware of is the routine
Clock() at the end of dbug.c. This returns the elapsed user time
in milliseconds. The version which I have is for 4.3 BSD. As I
don't have access to other systems, I'm not certain how this would
change.

An example of the report generated follows:

Profile of Execution
Execution times are in milliseconds

Calls Time
----- ----
Times Percentage Time Spent Percentage
Function Called of total in Function of total Importance
======== ====== ========== =========== ========== ==========
factorial 5 83.33 30 100.00 8333
main 1 16.67 0 0.00 0
======== ====== ========== =========== ==========
Totals 6 100.00 30 100.00


As you can see, it's quite self-evident. The ``Importance'' column is a
metric obtained by multiplying the percentage of the calls and the percentage
of the time. Functions with higher 'importance' benefit the most from
being sped up.

I'm really not certain how to add support for setjmp/longjmp, or for
child processes, so I've ignored that for the time being. In most of
the code that I write, it isn't necessary. If you have any good ideas,
feel free to add them.

This has been very useful to me. If you can use it as part of your
dbug distribution, please feel free to do so.

Regards,

Binayak Banerjee
{allegra | astrovax | bpa | burdvax}!sjuvax!bbanerje
bbanerje%sjuvax.sju.edu@relay.cs.net
July 9, 1987