ProDelphi 14.x -------------- Additional remarks which are not in the description or might be overlooked: - Don't use the optimization switch of the compiler, in some cases the compiler produces wrong code ( this has nothing to do with ProDelphi ), and second the measurement results are less correct. - The best results concerning correctness are got if the profiled program does not run under the IDE. Limitations of use: - Arithmetic expressions in $IF or $ELSEIF statements are always treated as TRUE. This is normally no problem (see GuidePD.pdf). Changes made in ProDelphi Version 15.9 (2/20/2004) - Improvement: Option ‘Do not change file dates’ improved. The file date/time is set back to the date/time valid when instrumenting the first time without cleaning before each instrumentation. Changes made in ProDelphi Version 14.9 (2/14/2004) - Bugfix: A space in the pathname of a directory below the Delphi source or lib directory cause files not to be profiled if that directory was in the search path of the profiled application. - Bugfix: A space on the path of the profiled application caused that ProDelphi did not automatically select the project when started by the IDE. Changes made in ProDelphi Version 14.7/14.8 (1/10/2004 - 1/31/2004) - Bugfix: An $IFDEF-/$ENDIF in a Uses statement caused problems when the ';' was inside $IFDEF-/$ENDIF. Changes made in ProDelphi Version 14.6 (12/30/2003) - Feature: Environmentvariable in the output path possible now. - Compatibility: Navigation interface can be used together with packages using ShareMem now. - Bugfix: Parser bug for processing a line with Application.Messagebox containing an empty string now. Changes made in ProDelphi Version 14.5 (12/11/2003) - Bugfix: ProDelphi ended after clicking OK after thread warning message. - Bugfix: Result file was reported to be empty when results were added. with the online operation window and no measured procedure was called. Changes made in ProDelphi Version 14.4b (11/22/2003) - Feature: Try to recognize if the application contains threads and display a warning if so and the option 'Testee contains threads' is not checked. - Enhancement: Form for excluding directories made more comfortable. Changes made in ProDelphi Version 14.4 (11/17/2003) - Feature: Excluding directories made more comfortable and safe. Changes made in ProDelphi Version 14.3 (11/9/2003) - Bugfix: Parser bug fixed Changes made in ProDelphi Version 14.2 (11/9/2003) - Bugfix: Results from methods from units in the library path were missing (appeared first in version 14.1). Changes made in ProDelphi Version 14.1 (11/1/2003) - Enhancement: The option 'Do not change file date' now makes that the file date is increased when profiling by 5 sec and decreased when cleaning by 5 sec. This makes possile that the file date keeps the same between checking out and in from a source code control system. - Enhancement: The Professional version can measure 64000 procedures now. Changes made in ProDelphi Version 14.0 (10/11/2003) - Feature: Number of activating procedures increased from 16 to 32. - Improved: Added chapter about hidden performance losses. - Bugfix: Units with one Uses-statement which is in the same line with the implementation statement were not instrumented. - Setup: Now it is possible to install ProDelphi on PC's without Drive C: Changes made in ProDelphi Version 13.9a (8/26/2003) - Bugfix: Settings in Ini-file were lost which caused incomplete call graphs. Changes made in ProDelphi Version 13.9 (8/21/2003) - Feature: Online operation window can be disabled - Feature: Form for selecting activating methods improved - Bugfix: Using some Windows API-Function (e.g. DispatchMessage) caused wrong entries in the call graph. Changes made in ProDelphi Version 13.8 (8/18/2003) - Bugfix: Closing the Online operation window terminated the profiled application. - Bugfix: Setup program deleted existing tools from the tools menu. Changes made in ProDelphi Version 13.7a (8/10/2003) - Bugfix: A local FORWARD declaration caused wrong procedure names in ProfList.ASC so that result data was assigned to the wrong method. Changes made in ProDelphi Version 13.7 (7/30/2003) - Bugfix: Environment variables in path names were not processed correctly if noted at the beginning of the path. Changes made in ProDelphi Version 13.6 (7/19/2003) - Bugfix: History always used the file progname.hst in the exe-directory even another file was selected. - Bugfix: A local FORWARD declaration caused that following procedures were not instrumented. Changes made in ProDelphi Version 13.5 (6/26/2003) - Bugfix: Applications with a language resource file aborted with ecxeption. - Bugfix: Check for profiling more than 32000 methods was missing, which caused partly wrong measurement results when this case occured. Changes made in ProDelphi Version 13.4b (6/15/2003) - Bugfix: Directories with a dot in their name caused to disable history. - Bugfix: Compiler symbols defined in an include file were unknown in the calling procedure. - Bugfix: Compiler symbols defined in a unit file were unknown in the called include file. - Improved: Default directory for history files is now the exe-output directory (13.4a). - Improved: Selecting a history file automatically activates the comparisation with the history data (13.4a). - Improved: Warning when overwriting a history file (13.4a). - Bugfix: Misleading error message when profiler accessed to result file while Online operation window was storing results (13.4b). Changes made in ProDelphi Version 13.3 (5/22/2003) - Bugfix: In a call Application.Messagebox it was not possible to have characters inside the call parameters that start a comment. - Improvement: In the call graph recursively called procedures are marked. Changes made in ProDelphi Version 13.2 (5/12/2003) - Bugfixes: Calculation of recursive functions completely worked over (this increased the accuracy of recursive functions), Emulation did not recalculate minimum and maximum times. - Stack depth increased from 9600 ti 16000 entries. Changes made in ProDelphi Version 13.1 (5/1/2003) - Bugfixes (Professional version only): Minimum runtime was calculated wrong for recursive functions (bug existed in all previous versions), displaying of Minimum and Maximum runtime was disabled (beginning with version 13.0) Changes made in ProDelphi Version 13.0 (4/27/2003) - Caller / Called graph: graphical view of who is calling whom - Starting point list, showing which procedures are not called by any other measured procedure. Useful to find measurement activation points. - Bug fix: When profiling Initialization part of a unit, the data of the last procedure of a unit was invisible. Changes made in ProDelphi Version 12.1 (3/28/2003) - Correction of algorithym for estimating the CPU-speed for mobile processors. Changes made in ProDelphi Version 12.0 (3/23/2003) - Clicking on a method in the viewer window opens the source file and positions the cursor to the method definition (Delphi 5 .. 7 only). - Multiple history files possible now. - Print menu displays the number of pages used for printing the results. - Bugfix: Print All Pages printed only the first page. Changes made in ProDelphi Version 11.7 (3/8/2003) - Viewer enhanced - Bug in API fixed (ProfAppendResults did not work) - User Guide corrected Changes made in ProDelphi Version 11.6 (1/30/2003) - Bugfix in parser resolved. - Setup program fixed: start from network drive now possible. Changes made in ProDelphi Version 11.5 (11/11/2002) - Bug in displaying data after sorting the results with class or method as sort criteria (the colums which include child times were not actualized). Changes made in ProDelphi Version 11.4 (10/15/2002) - Setup program improved: it is no nonger necessary to manually install ProfMeas.dll. For upgrading from freeware version to professional version a complete distribution has to be downloaded from internet. - Bugfix: Definition of SleepEx in the interface file corrected. Changes made in ProDelphi Version 11.3 (9/30/2002) - Bugfix: Files named in the Uses - statement of a DPR-file were profiled even they were write protected. - Bugfix: Project settings were not persistent if DPR- and EXE-file were in different directories. Changes made in ProDelphi Version 11.2 (9/4/2002) - Bugfix: Information for measured specified parts of procedures was missing if ‘Local procedures’ was not activated. Changes made in ProDelphi Version 10.5/11.1 (8/29/2002) - Parser enhancement: Procedure declarations over more than one line are handled now Changes made in ProDelphi Version 10.4 (8/8/2002) - Bugfix: PostMortem Review produced wrong USES-statements Changes made in ProDelphi Version 11.0 (7/22/2002) - Adaption to Delphi 7 Changes made in ProDelphi Version 10.3 (7/21/2002) - Profiling of a program that is measured simultaneously together with DLL's and profiling of simultaneously measured DLL's made easier (this includes an improvement of the user guide). - Bugfix of release 10.2: Clean function did not clean all files. - Bugfix of release 10.2: Some files named in the uses-statement were not profiled when they were not in the search path (this concerned DLL's only). Changes made in ProDelphi Version 10.2 (7/15/2002) - Processing of environment variables in pathnames added - Profiling of files named in the USES-statement of the DPR-file of the profiled project added. Changes made in ProDelphi Version 10.1 (7/1/2002) - Upgrade for cross platform development Windows / Linux - Parser bug in treating CASE-statements fixed - Setup program enhanced (treatment of missing registry keys) Changes made in ProDelphi Version 10.0 (5/26/2002) - Maximum and minimum runtimes stored - Button to open the user guide - User Interface improved - Optional profiling of the library path - Profiling specified parts of a method - Bugfix: Rounding bug in sorting after maximum changes fixed Changes made in ProDelphi Version 9.6 (4/3/2002) - Improvement: Automatic and cyclic storage of measurement results via online operation window. - Bug fix: Two END-statement in one line could have caused procedures not to be profiled. Changes made in ProDelphi Version 9.55 (3/25/2002) Nothing. The files copied to the web site were wrong, to make sure one has the correct file, the version was increased. Changes made in ProDelphi Version 9.54 (3/19/2002) - Bug fix: Sometimes class definitions in an include file or in the implementation part of a unit were misinterpreted - Bug fix: Forward definitions of overloaded functions caused wrong results in the viewer if these definitions were made in the implementation part or in an include file - Bug fix: In the viewer window it was not clear, which of overloaded functions consumed the CPU time (now they are enumerated) - Improvement: Due to some customers request, the time stamp of a profiled file optionally is only changed by a minimum through profiling or cleaning. On request now the time is only changed by 3 sec's so that the IDE still recognizes that a file has changed. This feature is available in the professional mode only !!! Changes made in ProDelphi Version 9.53 (2/12/2002) - Warning, if Method declarations are split into two lines - Log improved Changes made in ProDelphi Version 9.52 (1/17/2002) - Bugfix: If optimization was activated in the source file the automatic deactivation did not work always and produced multiple lines for deactivation. Changes made in ProDelphi Version 9.51 (1/15/2002) - Bugfix: Names of local procedures were converted to upper case. - Bugfix: When processing files with the read only attribute, the read only attribute was not set to true after profiling or cleaning. - Bugfix: If local procedures were present but were not profiled, an exception could have occured when starting the program. Changes made in ProDelphi Version 9.4 (1/6/2002) - Printed report enhanced: Color save mode or full color mode selectable - Optical improvement Changes made in ProDelphi Version 9.3 (12/5/2001) - For Delphi 6 the DOF-file was misinterpreted which caused files not to be profiled Changes made in ProDelphi Version 9.2 (11/25/2001) - Button texts for selecting a method corrected - Optical improvement - Documentation as PDF-file - CLX support reactivated - Exclusion of directories for profiling - Bug fixes Changes made in ProDelphi Version 9.1 (8/3/2001) - Printing of Reports added - CLX support deactivated Changes made in ProDelphi Version 9.0 (6/22/2001) - Support of Delphi 6 - Support of CLX library Changes made in ProDelphi Version 8.55 (4/21/2001) - Size optimization for one of the measurement DLL's (Profmeas.DLL) - Search function of the viewer optimized - Processing of Initialization and Finalization part corrected Changes made in ProDelphi Version 8.54 (2/24/2001) - New feature: Always on top for online operation window - Bug fix: Class methods and Class forward references can be handled - Bug fix: Processing of relative pathnames improved Changes made in ProDelphi Version 8.53 (2/19/2001) - Incomplete error message concerning missing file fixed - Cleaning the sources now also deletes the measurement result files (opt.) Changes made in ProDelphi Version 8.52 (2/14/2001) - Units without USES-clause wer not profiled Changes made in ProDelphi Version 8.51 (1/27/2001) - New feature to measure only the main thread - Bugfix: Counting inherited times for caller fixed Changes made in ProDelphi Version 8.5 (12/15/2000) - user interface made more secure and easier understandable, - warning shown if no DOF-file exists, - viewer automatically selects the result file, - viewer sorts detail window when clicking column headers, - registration integrated in main program, - two minor bugfixes. Changes made in ProDelphi Version 8.4a (10/21/2000) - Parser bug fixed Changes made in ProDelphi Version 8.4 (10/16/2000) - Browser enhanced - Viewer consumes less memory now Changes made in ProDelphi Version 8.3 (09/03/2000) - Viewer enhanced - Parser enhanced - Bug in SETUP.EXE fixed, aborted if no drive C: existed Changes made in ProDelphi Version 8.2 (07/31/2000) - Profiler aborted instrumenting when processing a file with a total length of less than 80 bytes. Changes made in ProDelphi Version 8.1 (07/12/2000) - Version from 07/07/2000 could only be installed with administrator rights under Win NT / 2000 Changes made in ProDelphi Version 8.1 (07/07/2000) - Color and font enhancements for the viewer - Error message concerning not ready removable drives corrected Changes made in ProDelphi Version 8.03 (06/01/2000) - ProDelphi reported 'No space on disk' if a part of the units search path had no drive letter: fixed. - Units search path not editable anymore (caused some problems) Changes made in ProDelphi Version 8.02 (05/22/2000) Enhancements for profiling multithreaded applications: - Measurement overhead decreased, - Accuracy increased, - Calibration process tuned (much faster now). Enhancement for single and multithreaded applications: - Calibration now processor and Delphi-version dependant (higher accuracy for Delphi 2..4), Comments in the DLL-Examples corrected. Changes made in ProDelphi Version 8.01 (05/13/2000) - Storing of measurement results tuned Changes made in ProDelphi Version 8.0 (04/27/2000) - Dynamical switching measurement on and off enhanced: . Instead of calling the API-functions ProfActivate and ProfDeactivate a special comment can be placed before the method with which the measurement should be started (//PROFILE-ACTIVATE). The maximum number of activation comments is unlimited. . At the end of the profiling process a dialog window is opened in which activating methods can be selected (if dynamcic activation is wanted). Between different activation methods can be switched without a new profiling process to be executed. The maximum amount of activation methods selected interactiv is 16. . Activation by inserting //PROFILE-ACTIVATE and selecting in a dialog window can be mixed. - Measurement an start options do not afford a new profiling process. - Measurement results can be emulated for another PC than that one on which the measurements have been done. So easily a slower or faster customers PC can be emulated. This saves the installation of the complete IDE on the customers equipment. Of course an emulation has a lower accuracy than a measurement done with the original equipment. - Profiling log added - Freeware mode only: If more than 30 procedures are measured, the the runtime of all those procedures that are not displayed is summarized and displayed. - Post mortem review enhanced: . In a case of an exception the name of the exception is given, . Handling of recursively called functions improved. Changes made in ProDelphi Version 7.62 (04/17/2000) - Two or more entries $(Delphi) in the units search path caused a profiling error when after $(Delphi) either \Lib or \Source was noted. - Processing of $IFDEF, $IFOPT, etc. was case sensitive (needed to be in capital characters). - $IFDEF in a Uses-statement caused errors. - Units search path is editable now (due to a customers request). - Amount of profilable method increased from 16000 to 32000 (due to a customers request). Professional mode only. Changes made in ProDelphi Version 7.61 (04/06/2000) - Pathname problem fixed Changes made in ProDelphi Version 7.6/7.5 (03/25/2000) - browsers tuned (7.6) - parser bug fixed (7.5) - handling of the function MsgWaitForMultipleObjects(Ex) corrected(7.6) Changes made in ProDelphi Version 7.4 (02/27/2000) - Coverage Profiling on a procedural base: A browser displays all those methods which were not called. - Accuracy for measurement of pure Assembler procedures increased (professional mode only) Changes made in ProDelphi Version 7.3 (01/15/2000) - Enhanced accuracy of measurement, especially for nested procedures. - Optimization is automatically switched off if the user forgets to uncheck the optimization switch. This prevents crashes of the testee and guaranties a high accuracy measurement. - In Professional mode 16000 methods can be measured now (before 10000). - Bugfix: The $IFOPT compiler directive was not processed. - Bugfix: Example program displayed wrong time with some Intel processors. Changes made in ProDelphi Version 7.2 (11/21/1999) - Bugfix: Setup corrupted the Delphi tools menu if already more than nine tools existed. Uninstall deleted one entry too much in the tools menu, if ProDelphi was not the last installed tool. - ProDelphi can now process relative pathnames. Changes made in ProDelphi Version 7.1 (11/03/1999) - Bugfix: Profiler could not be executed under Windows 95A. Changes made in ProDelphi Version 7.0b (09/28/1999) - Bugfix: The Delphi demo sources could not be profiled (Error message: Path error). - Files in and below the Delphi LIB and SOURCE directory are excluded from profiling Changes made in ProDelphi Version 7.0 (09/26/1999) - Additions for Delphi 5 - History window corrected: It displays '---' for the time now, if no times for a method are not stored in the history file. Before the times of the actual run were displayed. Changes made in ProDelphi Version 6.7 (09/19/1999) - SetUp program corrected: Administrator rights for Windows NT not necessary anymore. - Integration into Delphi 2 tools menu fixed. - Integration into Delphi 2/3/4 tools menu enhanced. - Viewer enhanced for use with large screen fonts. - Some changes done for use with Delphi 5 (not tested yet). Changes made in ProDelphi Version 6.6 (08/24/1999) - History function: Comparing the actual runtime by mouse click with a preceding one, colored grids show which method got faster, which slower. - Search path can be longer than 255 characters now. - Documentation enhanced: hints for optimization and excact measurement. - Addings for Delphi 5 done (not tested yet). Changes made in ProDelphi Version 6.5a/b/c/d/e (08/15/1999) - Bugfix concerning wrong output directory for 2 profiler internal files (6.5a) - Incompatibility with the tool Arabella (ProDelphi used the same filenames)(6.5b) - Spaces in filenames are accepted now (6.5c) - Sorting of the detailed results causeD displaying wrong times (if the filter option to exclude methods with very small runtimes was used).(6.5d) - SetUp-program fixed, install didn't insert ProDelphi into the tools menu and uninstall didn't delete it. (6.5d) - Problems with profiling assembler procedures solved (professional mode) (6.5e) - With Windows 95a and partition sizes > 2 GB the checking for enough free disk was malfuntioning (6.5e) - For security reasons, the Delphi LIB-directory is not profiled anymore (6.5e) - Example program corrected: the displayed number of CPU-Cycles were correct but the displayed times were correct only on a PC with 233 MHz (estimation of CPU-frequency was missing) (6.5c) - Example program enhanced to fit to the higher accuracy of ProDelphi: smallest unit of time is now 0.001 micro second. (6.5c) - Display format of example program changed to the style of ProDelphi. (6.5c) Changes made in ProDelphi Version 6.5 (07/22/1999) - Bugfix: rounding error - Multiple directories can be profiled now - DOF-file entries are used by ProDelphi now - Viewer enhanced: smallest displayed time unit now 0.001 micro second, Display format made better readable. Changes made in ProDelphi Version 6.4 (06/03/1999): - Bug fix: Setup aborted installation procedure when running under Win95a or Win95b. No such problems occured under Win95c or WinNT 4.0. I hope it also runs under Win98. Release of Setup program is now V2.0. Changes made in ProDelphi Version 6.4 (05/30/1999): - Bug fix: Updating the list of files before profiling, corrected following mistake: If a file was copied to the profiling directory and ProDelphi was started, this file was not profiled. - Integration of ProDelphi into the Delphi Tools menu - Comfortable Setup program included now (V1.0) - Example programs included Changes made in ProDelphi Version 6.3a (05/16/1999): - Bug fixed: Crash could occure in Local Procedures (or wrong result) - Measurement not correct: 1 CPU-Cycle to much measured Changes made in ProDelphi Version 6.3 (05/12/1999): - Freeware and Professional mode: * Automatic reading of defined compiler symbols and switches from the DOF-file - Freeware mode: * number of measured procedures now 30 (before 20) * measuring of local procedures now possible * counting time of inherited methods for calling method possible now - Professional mode: * Profiling pure assembler procedures. Changes made in ProDelphi Version 6.2a (04/10/1999): - Parser-bug concerning class variables fixed. Changes made in ProDelphi Version 6.2 (04/05/1999): - Conditional compilation supported now, this means that IFDEF/IFNDEF- statements are evaluated now. - Enhancement of the viewer: Sorting of the results in the detail window after every possible criteria (alphabetical, procedure runtime, procedure runtime sum, procedure runtime incl. child time, etc. etc). - Browser added to the viewer. - 3 more Windows- API functions which set the program into idle status are handled now (no idle time measuring). - Memorises important profiling options. - Warning to save source files before profiling displayed now. - Minor sorting bug fixed. - Parser bug concerning nested local procedures corrected. - Upgrading to professional mode now by Serial Number. This means a better customer service. Just look at my homepage, if there is a new version, just download it, it runs with your serial number. Attention: Delete old *.PAS, *.DFM and *.DLL files of ProDelphi if you are upgrading from an older version of ProDelphi. Changes made in ProDelphi 6.1 (03/07/1999): - The viewer was enhanced, the Detail-window can be enlarged until full screen. Making the viewer windows smaller, results in hiding unimportant parts of the informations (not for Detail-window), so that the window can be made much smaller. Some windows have got a splitter, so that the window can be made smaller. The end of Unit-, class- and procedure names are no longer cut off after 25 characters (space for 40 characters availlable now). - Parser bug concerning pure assembler procedures corrected. - Calibation procedures are in a DLL now (ProfCali.DLL). - Additional Windows- and Delphi- API functions which set the program into idle status are handled now (no idle time measuring). - Instead of DCU-files as interfaces to the DLL's, now PAS-files are delivered. This has the advantage that extensions can be made by the user of ProDelphi. Changes in those units are made on own risk. This concerns mainly API- functions that cause setting the program into an idle state. - Documentation enhanced. Changes made in ProDelphi 6.0 (02/12/1999): - DLL-Support was enhanced: Now it is possible to profile program and DLL's simultaneously (or separetely as in version 5.3) - Read-Only files are either not profiled now or the Read-only attribute is automatically deleted. - Documentation corrected and completed. - Measuring bug concerning Application.ProcessMessages, Application.HandleMessage, DispatchMessage, Sleep and SleepEx corrected. - Parser bug concerning //PROFILE-NO without //PROFILE-YES corrected. - Parser bug concernig key words ASSEMBLER, FORWARD and EXTERNAL corrected. Changes made in ProDelphi 5.3 (12/20/1998): - DLL-Support added It is not described in the documentation yet. I've made a little example to show, how a DLL is measured. Unzip the files in DLLSUPP.ZIP and read the comments in the sources. It is quite simple. Changes made in ProDelphi 5.2 (12/18/1998): - Parser-bug concerning tabs in function or procedure statements corrected. - Parser-bug concerning BEGIN / END in variable names, - Viewer-bug corrected: If more than one measurement run was made (using the Append-button in the on-line operation window) and one or more procedures were never used, the procedure names from the second run on were wrong and so not usable. Changes made in ProDelphi 5.1 (11/22/1998): - Parser-bug concerning Application.ProcessMessages and DispatchMessages corrected - Sleep and SleepEx is treated now. Changes made in ProDelphi 5.0 (11/15/1998): - Inserted profiling statments are now partly in Assembler. This results in less measurement overhead and a better measurement accuracy (in my test program results of the measured program had an accuracy of +- 1 CPU-cycle on AMD K6. Results on Pentium without MMX are not so accurate). - Fixed 1 bug: testee aborted at program end if all procedures had a runtime of 0 CPU-cycles (empty procedures). Changes made in ProDelphi 4.0 (10/11/1998): - Export into data base, - Adding a viewer to look at the results directly with the profiler, - measurement results in CPU-cycles availlable - 2 minor bug fixes - greater accuracy and less measurement overhead compared to previous versions by using 64 bit integers instead of data type Comp. - measurement results for recursive procedures fixed. - greater accuracy for calling of deactivated procedures (professional version only). - support of Delphi 4. Attention: ProDelphi 2.x for non-Intel-compatible CPU's is no longer supported. Changes made in ProDelphi 3.1 (05/10/98): Profiler.exe : Error message if too many procedures, Remembering the last directory for next startup of PROFILER.EXE, Easier installation. Proftime.DCU : Dramatically increased accuracy in time measurement (especially for small procedures), greater accuracy in determining the CPU-speed (especially for CPU >= 200 MHZ), no exception when running under IDE and Windows NT (the exception was produced by will but disturbing accuracy or functionallity), correction for the case that more than 20 procedures are registered, Remembering the last screen position for the online operation window.