32 and 64 bit
ProDelphi supports 32 bit applications developed with Delphi 5 or better on 32 and 64 bit processors.
ProDelphi64 supports 64 bit applications developed with Delphi XE2 .. XE8 or Delphi 10 .. 10.3 for 64 bit processors.
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).
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 .
ProDelphi can be used alternatively to AQTime which is also delivered with Delphi XE2..XE8.
ProDelphi64 can be used additionally to AQTime which is not able to measure 64 bit applications.
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 and above) is possible.
Profiling from command line is possible.
ProDelphi supports Delphi 5..7, 2005, 2006 (incl. Turbo Delphi) 2007 .. 2010, XE .. XE8, 10, 10.1 .. 10.3.
ProDelphi64 supports Delphi XE2 .. XE8, 10, 10.1 .. 10.3.
Fully supported. Compiler symbols and switches are read from the compilers option file (DOF/Bdsproj/Dproj).
Also symbols and switches in the source
file are processed. They are valid for the processed file and
included files only.
A browser can display all methods which were not called. (For a line-by-line coverage tool have a look at sourceforge.net for 'Discover for Delphi').
ProDelphi can read units that have been developped under Kylix (the Linux version of Delphi). It can handle VCL applications as well as CLX and FMX applications.
Many customer suggestions have been implemented in ProDelphi.
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.
ProDelphi comes with a real User Guide (and not with slim online help). The User Guide is available in English and German.
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:
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.
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.
ProDelphi supports Pentium and Pentium compatible processors.
It was tested on following AMD processors: K6, K6/2, K6/3, Athlon, Athlon XP, Duron, Turion 64 X2, Athlon 64 X2.
It was tested on following Intel processors: Pentium Overdrive, II, III, IV, Core I5, Celeron and Centrino.
For the profiling session 64 MB RAM is used additionally by ProDelphi.
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.
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.
ProDelphi was first used to optimize the SIEMENS - SCADA-system VICOS RSC for the projects Metro Guang Zhou, Shen Zhen and Sixth Railways in China. Other projects followed later (e.g. Melbourne).
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.
In the professional mode the user part of libraries can be profiled.
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 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.
Can optionally be excluded from measurement..
parts of procedures:
By special comments extra measurement points inside procedures can be defined.
runtimes in DLL's:
Fully supported. Program and DLL can be measured simultaneously.
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 .
The measured durations are displayed either in CPU-Cycles or in a variable time format. Following time formats are automatically selected:
Fully supported. ProDelphi reads the options and project file (DOF/Bdsproj/Dproj) of Delphi and automatically scans all directories in the search path + the directory of the DPR-file.
Specially supported by the optional feature of adding the runtimes of all inherited methods with the same name.
Example: A method 'LoadFromDisk' calls the method 'LoadFromDisk' of the inherited class. In this case the runtimes of both classes will be added.
(de)activation of measurement:
Measurement can be switched on and off at the programs runtime, also intermediate results can be stored online.
ProDelphi is compatible to Windows 95/98/ME/NT/2000/XP/Server 2003/Vista/7/8/10.
The optimization of the Delphi compiler is automatically deactivated if the user forgets this. This guaranties high measurement accuracy.
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.
Package profiling is supported for Delphi 2005 or better.
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. Optionally the program can be traced, see Tracing.
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).
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).
See upgrade to professional version.
(See also 'Differences between Freeware- and Professional Version' ).
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 original code of the measured procedure has to be replaced by a branch to the measurement procedure and stored and executed there. 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-/CLX-/FMX- function, the measurement is
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.
See also comparison between the three profiler types .
Measurement can be switched on and off at runtime. Intermediate results can be stored on disk.
ProDelphi inserts statements into the source files. To prevent a loss of code in case of power failure, the sources is saved before instrumentation (filename_sav). When the instrumentation is processed sucessfully, the saved file is deleted.
Because 'shit happens' all source code files should be saved before profiling (e.g. with WinZip).
ProDelphi is delivered with an 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).
Delphi 5 .. 6 (up to Windows XP), 7, 2005, 2006 (incl. Turbo Delphi) 2007 .. 2010, XE .. XE8, 10, 10.1 and 10.3.
VCL, CLX (Delphi 6 and 7) and FMX (Delphi XE2 .. XE8, 10, 10.1 .. 10.3 only).
of all measurement:
Simply done by deleting a compiler symbol and recompilation.
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).
An option of Post Mortem Review is tracing. ProDelphi can insert trace statement at procedure entry and exit points. For using this function DebugDelphi needs to be installed and started. The version of DebugDelphi for 32 bit applications is free and can be downloaded from this site.
If you need ProDelphi for a larger project and 20 measured procedures are not enough for you, you can order the professional version via ShareIt registration service.
Updates of the Professional Version due to bugfixes are free.
Upgrades of the Professional Version due to new versions of Delphi or new features of ProDelphi are available for 27.50 € (Ansi version) or 32.50€ (Unicode version).
Upgrades from any version to the 64 bit version (ProDelphi64) is available for 37.50 €.
Results can be either displayed in CPU-cycles or in a variable time format. On a pentium with 1000 MHz the smallest time unit is 0.001µs (= 1 ns).
With the built-in viewer and browser (navigator):
Differences between Freeware- and Professional versions of ProDelphi (Ansi- and Unicode):
Additional features of the Unicode versions of ProDelphi and ProDelphi64: