|
|
Last Update of this page: September/30/2002
Action controlled measurement:
Measurement can be switched on and off dynamically
by entering and finishing a procedure or 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 ProKylix, 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.
Compiler versions:
ProKylix supports Kylix 1.. Kylix 3. Upgrades
for future Linux versions of Kylix will be cost free.
Conditional compilation:
Fully supported. Compiler symbols and switches
are read from the compilers option file (DOF).
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:
ProKylix can read units that have been developped
under Delphi (the Windows version of Kylix). It can handle CLX applications
as well as VCL applications.
Customer suggestions:
Many customer suggestions have been implemented
in ProKylix in the last versions.
Cyclic storage of measurement
results:
Measurements can be stored cyclically (activated
by online operation window). With the viewer it be scrolled through the different
measurements.
Documentation:
ProKylix comes with a real User Guide (and not
with slim online help).
Exclusion of parts of the program from measurement:
Directories:
Granularity:
ProKylix measure 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 Kylix calls. See list of handled
functions in the manual.
Hardware:
ProKylix supports Pentium and Pentium compatible
processors.
For the profiling session 16 MB RAM is used
additionally by ProKylix.
History function:
ProKylix 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.
History of ProKylix:
ProKylix is a ported version of ProDelphi (see
there).
Industrial approvement:
The windows version of ProKylix (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 Kylix
tools menu:
If ProKylix is installed with the setup program,
it is automatically integrated into the Kylix 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 runtimes in shared
object libraries:
Not supported yet due to a bug in Kylix.
Measurement accuracy:
ProKylix 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 ProKylix. You can easily check the
accuracy of ProKylix with the included example 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.
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. ProKylix reads the options file
(*.kof) of Kylix 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:
ProKylix is compatible to Suse 7.1. Other platforms
supported by Kylix should also work.
Optimization option:
The optimization of the Kylix 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 ProKylix 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
Kylix-IDE).
Printing reports:
Optionally a printable file can be stored (see
also 'Viewing of measurement results').
Professional mode:
There is only one version of ProKylix. After
downloading it, it runs in the Freeware mode. By entering the registration
information it automatically runs in the Professional mode (see also 'Differences between Freeware- and Professional mode').
Profiler
type:
ProKylix 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 ProKylix'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 Linux- or CLX-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:
ProKylix 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 zip or tar).
Setup:
ProKylix is delivered with a easy to use setup
program. It copies all files into the appropriate directories, integrates
ProKylix into the Kylix tools menu.
Switching off of all measurement:
Simply done by deleting a compiler symbol and
recompilation.
Threads:
ProKylix has special settings for single threaded
applications (low overhead, extremly accurate) and for multi threaded applications
(medium overhead, medium accurate).
Upgrading:
If you decide to use ProKylix, you can download
any upgrade or bug fix from my homepage. If you need ProKylix for a larger
project and 30 measured procedures are not enough for you, you can order
the key to upgrade to the professional mode via ShareIt registration service.
If you do so, any downloaded new version will automatically run in the professional
mode (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.
ProKylix has THREE possibilities of viewing the
measured runtimes:
Y2K compliance:
ProKylix is fully Year 2000 compliant
Differences between Freeware- and Professional mode: