ProLazaX and ProLazaX64 - Features

32 bit version:
ProLazaX supports 32 bit applications developed with Linux version of Lazarus.

64 bit version:
ProLazaX64 supports 64 bit applications developed with Linux version of Lazaruss.

Action controlled measurement:
Measurement can be switched on and off dynamically by entering and finishing a procedure or a function. This can be activated, by insertioon of special comments or by API-calls into the source files.

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) and  function coverage 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 .

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.

Command line:
Profiling from command line is possible.

Compiler versions:
ProLazaX(64) supports Lazarus 1.x.

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.

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:
ProLazaX(64) 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:

Units or Include files: Parts of a unit or an include file: Freeware Versions:
The Freeware Versions can be downloaded from the ProDelphi homepage.
The Professional Versions can be ordered at ShareIt software registration service and is sent as e-mail with download link.
(See also'Differences between Freeware- and Professional version' ).

Granularity:
ProLazaX(64) 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 Linux-API calls are not measured, also idle times of some Lazarus calls. See list of handled functions in the manual.

Hardware:
ProLazaX(64) supports Pentium and Pentium compatible processors.

History function:
ProLazaX(64) 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 ProLazaX:
ProLazaX(64) is ProLaza ported for Linux development.

Integration into the Lazarus IDE:
ProLazaX(64) can be integrated into the Lazarus tools menu.

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 libraries:
Officially not supported.

Measurement accuracy:
ProLazaX(64) 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 ProLazaX(64). 

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:

For all methods the time for a single call and the runtime sum is displayed (also additionally with included child times).

Multiple profiling directories:
Fully supported. ProLazaX(64) processes the complete search path.

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:
ProLazaX is compatible with Ubuntu 32 bit.
ProLazaX64 is compatible with Ubuntu 64 bitt.

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.

Professional version:

See upgrade to professional version.
(See also 'Differences between Freeware- and Professional Version' ).

Profiler type:
ProLazaX(64) 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:
ProLazaX(64) 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:
ProLazaX(64)  has to be copied to an apropriate directory of users choice.

Supported Lazarus versions:
Lazarus 1.x.

Supported libraries:
LCL and FPC.

Switching off of all measurement:
Simply done by deleting a compiler symbol and recompilation.

Threads:
ProLazaX(64) 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).

Upgrading to Professional Version:

If you need ProLazaX(64) 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 Professional Version:
Updates of the Professional Version due to bugfixes are free.
Upgrades
of the Professional Version due to new versions of Lazarus or new features of ProLaza are available for 15.-

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.001s (= 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.