|
32
bit version:
ProLaza
supports 32 bit applications developed with Lazarus 1.0 or
better for 32 and 64 bit processors.
64
bit version:
ProLaza64
supports 64 bit applications developed with Lazarus 1.0 or
better for 64 bit processors.
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).
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 ProLaza,
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 .
Command
line:
Profiling from command line is
possible.
Compiler
versions:
ProLaza supports Lazarus 1.x and
better.
Conditional
compilation:
Fully supported. Compiler symbols
and switches are read from the compilers project file (LPI).
Coverage
profiling:
A browser can display all methods
which were not called.
Documentation:
ProLaza 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:
ProLaza 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 measured separately, also idle times of
some Lazarus calls and not included in the runtime. See list
of handled functions in the manual.
Hardware:
ProLaza supports Pentium and
Pentium compatible processors.
History
function:
ProLaza 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 ProLaza:
ProLaza is ProDelphi ported for
Lazarus developpment.
Integration
into the Lazarus IDE:
ProLaza can be integrated into the
Lazarus tools menu. The setup program displays a window with
instructions.
Libraries:
In the professional mode the user
part of libraries can be profiled.
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:
ProLaza 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 ProLaza.
Measurement
results:
The measured durations are
displayed either in CPU-Cycles, in a fixed or in a variable
time format. Following time formats are automatically
selected:
Multiple
profiling directories:
Fully supported. ProLaza reads the
project file (LPI) of Lazarus 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 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.
Online
(de)activation of measurement:
Measurement can be switched on and
off at the programs runtime, also intermediate results can be
stored online.
Operating
systems:
ProLaza is compatible to Windows
2000/XP/Server 2003/Vista/7/8/10 and 11.
ProLaza64 is compatible to
Windows XP 64 bit / Vista 64 bit / 7 64 bit / 8 64 bit / 10 64
bit / 11 64 bit
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 ProLaza shows its outstanding quality: by a very low
measurement overhead. All measurement routines are extremely
optimized.
Packages:
Package profiling is not supported
yet.
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. 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 Lazarus-IDE).
See upgrade to professional
version.
(See also 'Differences
between
Freeware- and Professional Version' ).
Profiler type:
ProLaza 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 ProLaza'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 LCL - 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.
See also comparison between the three profiler types .
Programming-API:
Measurement can be switched on and
off at runtime. Intermediate results can be stored on disk.
Security:
ProLaza 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).
Setup:
ProLaza is delivered with an easy
to use setup program. It copies all files into the appropriate
directories and creates an entry in the Windows list of
programs (Start menu / Programs).
Supported
Lazarus versions:
Lazarus 1.x and better.
Supported
libraries:
LCL and FPC.
Switching
off of all measurement:
Simply done by deleting a compiler
symbol and recompilation.
Threads:
ProLaza 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).
Tracing:
An
option of Post Mortem Review is tracing. ProLaza 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.
Selectable UI languages:
English, German, Dutch, French or Italian, Online
changeable.
Upgrading
to Professional Version:
If you need ProLaza for a larger
project and 20 measured procedures are not enough for you, you
can order the professional version via Digistore24
registration service.
Updates
of Professional Version:
Updates of the Professional Version
due to bugfixes are free.
Viewing
of measurement results:
Results can be either displayed in
CPU-cycles, in a fixed 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):
The complete results can be
sorted using different criteria.
Procedures which consume the most
CPU-cycles or are called most often are additionally
prefiltered and sorted.
In professional mode besides
average runtimes also minimum and maximum times can be
viewed.
The browser can be used to
quickly find a certain method, or to find out which method
was not called.
Text search for units, classes or
methods is available.
Caller / Call graph (see screen
shot).
The viewer can automatically exclude methods with a very low runtime from displaying in the measurement results.