|
Last Update of this page: January/3/2004
Action controlled
measurement:
Measurement can be switched on and off
dynamically by entering and finishing a procedure or a function. This
can
be activated user friendly by a selection form (for fast changing the
activation
points), by special comments and by API-calls in the source files (if
permanently the same points shall be used for a long period).
Activation by API-calls was availlable since release 3.0 already but
was and is not very user friendly.
All-in-one-profiling:
With one profiling session the number of
calls for a method (call count profiling), the average runtime
of a method (function profiling), function coverage
profiling and emulation profiling can be performed. When
developing ProDelphi, the philosophy was (and is) to develop a high
precision profiling tool (thats why it is neither a sampling nor
a machine code instrumenting profiler) and to produce a minimum of
overhead (that's why there is no line profiling mode). See also Profiler type.
Call graphs:
A graph shows by who a procedure is called
and which procedure it is calling. It also shows how often this
happened an the time consumed when processing these calls. By clicking
on the procedure symbol a quick following the execution path of the
application as well
as opening the approrpriate source file in the editor (Delphi 5..7) is
possible.
Compiler versions:
ProDelphi supports Delphi 2/3/4/5/6/7.
Upgrades for future windows versions of Delphi will be cost free
(except
the version for Delphi.Net).
Conditional
compilation:
Fully supported. Compiler symbols and
switches are read from the compilers option file (DOF).
Also symbols and switches in the source
file are processed. They are valid for the processed file and included
files only.
Coverage profiling:
A browser can display all methods which
were not called. (For a line-by-line coverage tool, have a look at my
link page).
Cross platform
profiling:
ProDelphi can read units that have been
developped under Kylix (the Linux version of Delphi). It can handle VCL
applications as well as CLX applications.
Customer suggestions:
Many customer suggestions have been
implemented in ProDelphi in the last versions.
Cyclic storage of
measurement results:
Measurements can be stored cyclically
(activated by online operation window). With the viewer it can be
scrolled through the different measurements.
Documentation:
ProDelphi comes with a real User Guide
(and not with slim online help).
Emulation profiling:
The measured results can be recalculated
for a faster or slower PC. So it's e.g. not necessary to have a
customers PC for the development process. By entering a speed constant
and the number of MHz'es the other PC can be emulated. Of course the
results are not as accurate as they are with measuring on the original
equipment.
Exclusion of parts of the program from measurement:
Directories:
Granularity:
ProDelphi measures in CPU-cycles. The smallest measurable unit is 1 CPU-cycle.
This means that on a Pentium with 1000 MHz the smallest measurable
duration is 0.001 µs = 1ns.
Handling of idle
times:
Idle times produced by some Windows-API
calls are not measured, also idle times of some Delphi calls. See list
of
handled functions in the manual.
Hardware:
ProDelphi supports Pentium and Pentium
compatible processors.
It was tested on following AMD processors:
K6, K6/2, K6/3, Athlon, Duron
It was tested on following Intel
processors: Pentium Overdrive, II, III, IV, Celeron and Centrino.
It was tested with PC66, PC100, PC133 and
PC2100 memory.
For the profiling session 32 MB RAM is
used additionally by ProDelphi.
History function:
ProDelphi comes with a built-in history
function. The viewer shows by a colored grid, which functions got
faster and which got slower since the last storing of results into the
history file.
By a mouse click on a result line of the viewers grid, the time from
the
history file is displayed for the selected procedure. Multiple history
files
can be stored.
History of ProDelphi:
Release 1 issued 9/97, Release 3.1 with
granularity of 1 CPU cycle published 5/98 on Torry's Delphi pages.
Permanent improvement since then, many customer suggestions implemented.
Industrial
approvement:
ProDelphi was first used to optimize the SIEMENS - SCADA-system VICOS
P500 for the projects Metro Guang Zhou, Shen Zhen and Sixth
Railways in China. Other projects followed later (e.g. Melbourne).
Integration into the
Delphi IDE:
If ProDelphi is installed with the setup
program, it is automatically integrated into the Delphi tools menu.
Also an interface to Delphi is installed, so that a unit can be opened
in Delphi by clicking with the mouse into the viewer window of
ProDelphi. The editor will display the measured procedure after that.
(This feature is availlable if used with Delphi 5 or above).
Libraries:
In the professional mode the user part
of libraries can be profiled.
Limitations:
There are no limitations regarding size or
accuracy: Even the smallest procedures are measured accurate, there is
no minimum size required for a procedure to be measured.
Line profiling:
Line profiling is not supported. This has
two reasons: Counting runtimes for lines changes the instruction
processing of the CPU so much, that no useful results can be expected.
Counting runtime for lines also slows down a program too much.
Local Procedures:
Can optionally be excluded from
measurement..
Measuring parts of
procedures:
By special comments extra measurement
points inside procedures can be defined.
Measuring runtimes
in
DLL's:
Fully supported. Program and DLL can be
measured simultaneously.
Measurement accuracy:
ProDelphi measures very accurately. The
measurement overhead is automatically removed from the measured times.
A
sophisticated algorithm calculates the runtime used for measurement at
initialization
time. Nested function calls are no problem for ProDelphi. You can
easily
check the accuracy of ProDelphi with the profiler
tester. It consists of two programs: One measures automatically the
run-time of
a few procedures and displays the result. The second program uses the
same
procedures without measuring, it has to be profiled. You can compare
the
results of the measurement with ProDelphi (or any other profiler) and
those
of the self measuring program.
Measurement results:
The measured durations are displayed
either in CPU-Cycles or in a variable time format. Following time
formats are
automatically selected:
Multiple profiling
directories:
Fully supported. ProDelphi reads the
options file (DOF) of Delphi and automatically scans all directories in
the search path + the directory of the DPR-file.
Object orientation:
Specially supported by the optional
feature of adding the runtimes of all methods with the same name (if
the used object is the same).
Example: A method 'LoadFromDisk' calls
the method 'LoadFromDisk' of the inherited class. In this case the
runtimes
of both classes will be added.
Online operating the
measurement:
Measurement can be switched on and off
at the programs runtime, also results can be stored online.
Operating systems:
ProDelphi is compatible to Windows
95/98/ME/NT/2000/XP. All functions are available on all platforms.
Optimization option:
The optimization of the Delphi compiler is
automatically deactivated if the user forgets this. This guaranties
high measurement accuracy.
Overhead:
Measurement of runtime costs measurement
overhead. This is another point (like accuracy) where ProDelphi shows
its outstanding quality: by a very low measurement overhead. All
measurement routines are extremely optimized.
Post Mortem Review:
Instead of vaccinating (instrumenting)
the sources with statements for runtime measurement, it can be
vaccinated
with statements for exception trapping. In case of an exception
occuring
the call stack is stored into a file inclusive the name of the
exception.
The program can be delivered in an
instrumented form to a customer. This could be done in case of sporadic
exceptions.
The source code does not have to be given to the customer (together
with
the Delphi-IDE).
Printing reports:
The measurement results can be printed
on any Windows printer (inclusive graphics). The report can either be
printed in full color mode or in color save mode (black, absolutely
necessary parts in color, due to the high costs for color ink
cartridges).
Professional version:
After downloading the professional
version, it runs in the Freeware mode. After entering the registration
information it automatically runs in the Professional mode (see also 'Differences between Freeware- and Professional mode').
Profiler
type:
ProDelphi is a
source code instrumenting profiler. Source
instrumenting versus machine code
instrumenting has the
big advantage, that at the best position possible a time stamp can be
taken: At the start and the end of the procedure body. No profiler
internal code outside the procedure is called before taking the time
stamp. No profiler code has possibly to be copied into the processor
cache before taking the time stamp (which destroys the accuracy). The
normal instruction flow (nearly identical as without profiling) is
kept. This is one of the reasons for
ProDelphi's outstanding accuaracy.
Another advantage of a source
instrumenting profiler is, that idle times (caused e.g. by opening a
message box) can be handled. Before calling the Windows- or
VCL-function, the measurement
is deactivated.
The only disadvantage of a source
instrumenting profiler is that the source files are changed by the
vaccination (instrumentation) process. To avoid the risk of impacting
the sources, they should be saved before.
Sampling profilers: with a low sampling rate small procedures can not be measured, with a high sampling rate the profiled program has to be interrupted very often, what means, that the runtime behaviour of the tested program is changed very much. Sampling profilers also cannot handle idle times.
Programming-API:
Measurement can be switched on and off
at runtime. Intermediate results can be stored on disk.
Security:
ProDelphi inserts statements into the
source files. If this process has a bug or in case of power failure,
the sources might be destroyed. It is strongly recommended to save all
source code files before profiling (e.g. by WinZip).
Setup:
ProDelphi is delivered with a easy to use
setup program. It copies all files into the appropriate directories,
integrates ProDelphi into the Delphi tools menu and creates an entry in
the Windows list of programs (Start menu / Programs).
Supported Delphi
versions:
Delphi 2 to 7
Supported libraries:
CLX and VCL
Switching off of all
measurement:
Simply done by deleting a compiler symbol
and recompilation.
Threads:
ProDelphi has special settings for single
threaded applications (low overhead, extremly accurate) and for multi
threaded applications (medium overhead, medium accurate). A special
option allows to exclusively measure the main thread only (Professional
version only).
Upgrading:
If you need ProDelphi for a larger project
and 20 measured procedures are not enough for you, you can order the
key to upgrade to the professional version via ShareIt registration
service.
This key is valid for all future versions of ProDelphi except for
Delphi
for .Net (Buy one - get many).
Viewing of
measurement results:
Results can be either displayed in
CPU-cycles or in a variable time format. On a pentium with 500 MHz the
smallest time unit is 0.002µs.
ProDelphi has TWO possibilities of viewing
the measured runtimes:
Differences between Freeware- and Professional mode: