OS4 DepotLogo by Nickman 
(anonymous IP:,2216) 

   Bug tracker
   Locale browser


   o Audio (343)
   o Datatype (51)
   o Demo (203)
   o Development (600)
   o Document (22)
   o Driver (97)
   o Emulation (148)
   o Game (1005)
   o Graphics (499)
   o Library (116)
   o Network (233)
   o Office (66)
   o Utility (927)
   o Video (69)

Total files: 4379

Full index file
Recent index file



Support the site

 Readme for:  Development » Debug » profyler.lha


Description: Software performance profiler
Download: profyler.lha       (TIPS: Use the right click menu if your browser takes you back here all the time)
Size: 1Mb
Version: 1.1
Date: 06 Mar 2022
Author: Mike Steed
Submitter: Mike Steed
Email: 72207 463/compuserve com
Requirements: MUI >= 5; GCC
Category: development/debug
Replaces: development/debug/profyler.lha
License: GPL
Distribute: yes
Min OS Version: 4.1
FileID: 11975
Comments: 0
Snapshots: 0
Videos: 0
Downloads: 77  (Current version)
135  (Accumulated)
Votes: 13 (0/0)  (30 days/7 days)

Show comments Show snapshots Show videos Show content Show crashlogs Replace file 

Profyler is a tool for programmers only! You have to be able to compile a
program in order to use Profyler with it, so it is not useful for ordinary


Profyler is a software performance profiler -- or profiler for short -- for
AmigaOS 4. It allows the execution speed of the various functions that make
up a program to be measured, facilitating optimization of the program to
improve its performance.

More specifically, Profyler is a deterministic profiler, which adds code to
the program being profiled in order to implement the profiling functionality.
It uses the -finstrument-functions feature of the GCC compiler, which means
that it only works with C and C++ programs compiled with GCC. It also means
that a program must be compiled and then linked with LibProfyle in order to
be profiled; you can't profile a program that you can't compile.

There are two parts to Profyler: the Profyler program itself, which serves as
the user interface; and LibProfyle, a linkable library that provides the
profiling functionality. To profile a program you compile it and link it with
LibProfyle, then run it to generate the profile data in memory. You then run
Profyler to access the profile data and display it in a useful format.


o Measures the following parameters for every executed function in a program,
  displaying them in a list browser:

  - The function's name (C++ names are demangled)
  - The source file and line number where the function is defined
  - The number of times the function has been executed
  - The total execution time of all calls to the function, *including* any
    other functions it calls
  - The above as a percentage of the total execution time of the program
  - The average execution time of the function per call, *including* any
    other functions it calls
  - The total execution time of all calls to the function, *excluding* any
    other functions it calls
  - The above as a percentage of the total execution time of the program
  - The average execution time of the function per call, *excluding* any
    other functions it calls

o All the usual list browser controls are available:

  - Can sort the list by any of the columns, in ascending or descending
  - Can hide any of the columns if they are not of interest
  - Can drag and drop the columns to rearrange them

o Can profile up to nine different programs, with a different tab and list
  browser for each; allows profiling of programs that interact with each

o Can save the profile data to a text file (or send it to a printer) for
  record keeping or for further review

o Can save the profile data to a CSV file for import to a spreadsheet or
  other program for additional processing

o Can disable profiling of parts of a function (including OS calls) that
  involve user interaction, so user response time doesn't affect profiling

o Can avoid profiling of specific functions; useful for very brief functions
  that get called a lot, where the overhead of the profiler can greatly slow
  the program

o Doesn't depend on any particular PowerPC variant or hardware, so should
  work with any Amiga model that supports OS4

o Automatically adapts to the EClock speed of the machine it's running on;
  the faster the EClock the finer the measurement resolution

o The profiling code is optimized to be as quick as possible; for many
  applications the slowdown due to profiling is barely noticeable

o Can profile single-threaded programs, linked libraries, and shared objects;
  in many cases no modification to the source code is required


o Can profile only the main thread of multi-threaded programs

o Cannot profile functions that are called from a different context, such
  as a callback hook or custom BOOPSI gadget (MUI's custom classes and
  notification hooks are fine, as they are called from the program's

o Cannot profile shared (Amiga-style) libraries or devices

o Some compiler optimizations -- such as inlined functions -- cause problems
  with profiling and need to be disabled

o Some program constructs -- such as longjmp() and exit() -- cause problems
  with profiling

o The profiling code noticeably increases the size of a program being
  profiled, and can significantly slow speed-sensitive programs

What's New in v. 1.1

o A workaround has been added to compensate for a bug in Exec's ObtainDebug-
  Symbol call that prevented source file information (file name and line
  number) for each profiled function from being displayed

o Sorting the profiled functions by source file location used alphabetic
  sort order which caused, for example, line 9 to come after line 1000;
  they're now sorted alphabetically by file name, and then numerically by
  line number

o Added the file MyLib.so to the Test directory; it was inadvertently left
  out of the version 1.0 release, preventing the SOLibTest program from


o AmigaOS 4.1.6 (specifically, Exec version 53.41) or newer; Profyler and
  LibProfyle have been tested under OS 4.1.6 and OS 4.1.FE.2 on an X1000

o MUI 5 or newer; Profyler has been tested with recent versions of MUI 5

o GCC. LibProfyle should work with any version of GCC that supports the
  -finstrument-functions feature; it has been tested with GCC 4.2.4 and
  GCC 8.3.0, with both C and C++ code, and with both newlib and clib2

Source Code

Profyler and LibProfyle are open source. The source code is included.

Copyright © 2004-2024 by Björn Hagström All Rights Reserved