Board index » delphi » [ANN]ProDelphi 18.3 released (runtime measurement)

[ANN]ProDelphi 18.3 released (runtime measurement)


2005-11-29 06:36:58 AM
delphi267
Version 18.3 of the high accuracy industry approved profiler for
Delphi (Win32) is available now.
ProDelphi measures the runtime of Delphi applications with the
granularity of 1 CPU-cycle.
New in this version:
- optional german user interface
- minor bugfixes
The Delphi Magazine wrote about ProDelphi:
- "Only five minutes inclusive installation until identification of
critical areas ...",
- "an absolute bargain",
- "excellent documentation"
ProDelphi is available in two versions:
- A freeware version profiling up to 20 procedures
- A Professional version profiling up to 64000 procedures with some
additional features. Registration fee is 54.90 EUR.
Upgrade for future versions of Delphi for Win32 is free as usual !
Also available is a version for .Net applications (ProDelphi.Net).
Download via www.prodelphi.de
 
 

Re:[ANN]ProDelphi 18.3 released (runtime measurement)

Your tool looks great! I was looking forsomething like that, but didn't find
anything.
The only thing spoiling your demo is "MatchWare ScreenCoder Demo".
Do you know about DebugMode Wink?
debugmode.com/wink
That's really a great Freeware Tool for creating Flash presentations,
so people can click on a link on your website and
view your presentation in for of a Flash movie, inside a Browser.
You can check the ones I did, if you go to:
www.deltasoft.hr/rtc
Btw ... since my applications are multi-threaded,
will I get accurate results with your Profiler?
For example, if 200 threads execute, all doing a different thing,
will the results still be accurate for each function/method?
--
Danijel Tkalcec
www.deltasoft.hr/rtc/author.htm
RealThinClient components
-------------------------------------------
* The Easiest way to build Internet-enabled applications
- Clients, Stand-alone Servers, ISAPI extensions -
Quote
Write and Call Remote Functions
Download and Upload Files
Single- and Multi-Threaded mode
Firewall friendly - all over HTTP
Stress-tested for highest stability
www.realthinclient.com
or www.deltasoft.hr/rtc
 

Re:[ANN]ProDelphi 18.3 released (runtime measurement)

My question is probably silly, since the only way you could achieve correct
measurement when multiple threads are running would be to analize the source
code. And I don't think that would be possible, without integrating a
dissasembler to analize the generated exe file and use a table with CPU
cycles per instruction. Well, anyway ... that is not so important, since I
can run my tests in single-threaded mode.
I'm buying :o)
--
Danijel Tkalcec
www.deltasoft.hr/rtc/author.htm
RealThinClient components
-------------------------------------------
* The Easiest way to build Internet-enabled applications
- Clients, Stand-alone Servers, ISAPI extensions -
Quote
Write and Call Remote Functions
Download and Upload Files
Single- and Multi-Threaded mode
Firewall friendly - all over HTTP
Stress-tested for highest stability
www.realthinclient.com
or www.deltasoft.hr/rtc
 

Re:[ANN]ProDelphi 18.3 released (runtime measurement)

Danijel Tkalcec [RTC] said...
Quote
My question is probably silly, since the only way you could achieve correct measurement when multiple threads are running would be to analize the source code. And I don't think that would be possible, without integrating a dissasembler to analize the generated exe file and use a table with CPU cycles per instruction. Well, anyway ... that is not so important, since I can run my tests in single-threaded mode.

I'm buying :o)
It's a good profiler at a bargain price. I tried a bunch of 'em
and was unable to get comparable resolution from any other.
Served me very well for 2+ yrs.
--
Regards:
Jim McKay
I don't know what to do to keep from getting the Avian Flu,
but my first step is staying away from any bird running
a fever.
--Will Durst
Posted with XanaNews: Ver: 1.17.6.6
 

Re:[ANN]ProDelphi 18.3 released (runtime measurement)

Jim McKay writes:
Quote
It's a good profiler at a bargain price. I tried a bunch of 'em
and was unable to get comparable resolution from any other.
Served me very well for 2+ yrs.
Does it modify your source code at all?
--
Compact Framework IDE support for Delphi 2005 - v1.0 Available Now
Latest information: www.jed-software.com/cf.htm
Release Candidate available for JED, QC - QualityCentral Win32 client
Download if from: www.jed-software.com
 

Re:[ANN]ProDelphi 18.3 released (runtime measurement)

JED said...
Quote
Jim McKay writes:

>It's a good profiler at a bargain price. I tried a bunch of 'em
>and was unable to get comparable resolution from any other.
>Served me very well for 2+ yrs.

Does it modify your source code at all?
yes, similar to Primoz' profiler in that regard.
--
Regards:
Jim McKay
I don't know what to do to keep from getting the Avian Flu,
but my first step is staying away from any bird running
a fever.
--Will Durst
Posted with XanaNews: Ver: 1.17.6.6
 

Re:[ANN]ProDelphi 18.3 released (runtime measurement)

"JED" writes:
Quote
Jim McKay writes:

>It's a good profiler at a bargain price. I tried a bunch of 'em
>and was unable to get comparable resolution from any other.
>Served me very well for 2+ yrs.

Does it modify your source code at all?
Since it is not a compiler nor a de{*word*81}, I think it has to add something to
your code to be able to work. I am just not sure if it can add this
automaticaly to any unit, or you need to do it by hand. I guess it is capable
of modifying the sources which you want to profile, since it says in the
documetnation that you should save a copy of your source files, just in
case.
--
Danijel Tkalcec
www.deltasoft.hr/rtc/author.htm
RealThinClient components
-------------------------------------------
* The Easiest way to build Internet-enabled applications
- Clients, Stand-alone Servers, ISAPI extensions -
Quote
Write and Call Remote Functions
Download and Upload Files
Single- and Multi-Threaded mode
Firewall friendly - all over HTTP
Stress-tested for highest stability
www.realthinclient.com
or www.deltasoft.hr/rtc
 

Re:[ANN]ProDelphi 18.3 released (runtime measurement)

JED writes:
Quote
Jim McKay writes:

>It's a good profiler at a bargain price. I tried a bunch of 'em
>and was unable to get comparable resolution from any other.
>Served me very well for 2+ yrs.

Does it modify your source code at all?
Yes, it has to. If you don't like having to modify your source code, and
you're more interested in identifying bottlenecks than actually timing
code, then the freeware Sampling Profiler (Look in the .BASM and
.attachment groups to find it, AFAIK there's no website yet) is truly
excellent.
Cheers,
Nicholas Sherlock
 

Re:[ANN]ProDelphi 18.3 released (runtime measurement)

I've just started the AppClient demo under Sampling Profiler (with "Ignore
TApplication.Idle OS Time"), run "User Flood Test" with auto-repeat,
minimized the app and run it for 3 minutes. CPU usage was at 100% for the
duration of the test.
This is what came out
(from relevant to less relevant) ...
Modules (global times in %)
-----------------------------------------
48% ntdll.dll =>called from
- 16,37% TWinControl.DeaultHandler
- 6,73% TCanvas.GetHandle
- 5,00% TWinControl.WndProc
- 3,39% TCustomLabel.AdjustBounds
- 3,16% FindVCLWindow
- 2,34% SysFreeMem
- 2,30% TApplication.ProcessMessages
- 1,64% SysGetMem
- 1,58% FindControl
37% AppClient.exe =>units
- 21,49% System
- 4,34% Controls
- 2,29% SysUtils
- 1,96% rtcInfo (rtc unit)
- 1,36% Classes
- 1,01% Graphics
- 0,97% Forms
- 0,66% StdCtrls
- 0,61% rtcCliModule (rtc unit)
- 0,52% rtcCrypt (rtc unit)
- 0,34% memPtrPool (rtc unit)
- 0,31% AppClient_Unit (app unit)
Procedures (global times in %)
----------------------------------------------
8,78% GetDynaMethod =>called from
- 8,34% TObject.Dispatch
- 0,44% @CallDynaInst
1,98% SysGetMem =>called from
- 0,96% System.@GetMem
- 0,38% System.@ReallocMem
- 0,22% System.SysGetMem
- 0,09% Controls.TWinControl.WndProc
1,35% @LStrArrayClr =>called from
- 0,24% rtcInfo.TRtcHttpValues.PrepareValues
- 0,14% rtcInfo.TRtcFloatValue.from_code
- 0,09% Variants@VarToLStr
- 0,09% rtcInfo.StrToType
- 0,09% rtcInfo.TRtcRecord.GetObject
- 0,09% rtcInfo.TRtcValueObject.fromShortString
1,20% SysFreeMem =>called from
- 1,12% System.@FreeMem
- 0,05% System.@ReallocMem
- 0,02% System.InternalFreeMem
- 0,01% SysReallocMem
0,96% Move =>called from
- 0,37% System.@LStrFromPCharLen
- 0,15% AppClient_Unit.TForm1.Edit1Change
- 0,13% rtcCliModule.TRtcClientModule.Call_DataReceived
- 0,10% AppClient_Unit.TForm1.Edit4Change
- 0,05% System.@LStrAsg
- 0,04% System.@LStrCatN
- 0,03% System.@LStrCat
- 0,03% SysUtils.StrMove
0,83% TObject.InitInstance
0,70% TControl.WndProc
0,58% InsertFree
0,55% TextToFloat
0,53% @LStrAsg
0,52% TRtcCrypt.DeCrypt
0,40% SearcgSmallBlocks
0,39% TWinControl.DefaultHandler
---------------------------------------------------
See any improvement possibilities?
--
Danijel Tkalcec
www.deltasoft.hr/rtc/author.htm
RealThinClient components
-------------------------------------------
* The Easiest way to build Internet-enabled applications
- Clients, Stand-alone Servers, ISAPI extensions -
Quote
Write and Call Remote Functions
Download and Upload Files
Single- and Multi-Threaded mode
Firewall friendly - all over HTTP
Stress-tested for highest stability
www.realthinclient.com
or www.deltasoft.hr/rtc
 

Re:[ANN]ProDelphi 18.3 released (runtime measurement)

The problem with Sampling Profilers is that they don't give accurate
information, since they check the app periodicaly, if there are a number of
small routines executed sporadicaly, they will miss most of the hits, while
they concentrate on long-running routines. One other example is my AppServer
demo test, which I just run using 300 clients, processing 60.000 requests.
Here is the Info that came out for the Server ...
Modules (% global time)
---------------------------------------
85,19% ntdll.dll =>called from
- 21,94% SyncObjs.TEvent.WaitFor
- 14,71% ComObj.Finalization
- 12,11% System.SysGetMem
- 11,51% ???
- 5,04% Controls.TWinControl.DefaultHandler
- 3,96% Forms.TApplication.ProcessMessages
- 3,78% Controls.TWinControl.PaintHandler
11,09% AppServer.exe =>units
- 6,06% Classes (5,94% FreeDeviceContext)
- 2,16% System (0,60% TObject.Dispatch)
- 1,38% Controls
- 0,72% Graphics
- 0,42% Forms
- 0,18% memBinList
- 0,06% Windows
- 0,06% Types
- 0,06% rtcConn (rtc unit)
------------------------------------------------
Interesting thing about this information is that SyncObjs.TEvent.WaitFor
actually takes as good as no CPU time, while it is displayed here as one of
the worst time-consumers, Forms.TApplication.ProcessMessages is irrelevant
and there is practicaly no drawing done by the server (only a simple count
of open connections), but still Controls.TWinControl.PaintHandler takes
almost 4% of total time.
Well, if you ask me, this information is highly inaccurate and gives me
wrong data about possible bottlenecks in my application. One thing I know
for sure is that the biggest "bottleneck" is the automatic
compression/decompression, which reduces overall performance by more than
100% when turned on. Also, there's some "undefined ???" which took 11,51% of
total time spent in "ntdll.dll".
Bottom line is, I don't see any use for the Sampling Profiler. It is nice to
see how it can produce some results without making any modifications to my
app, but it doesn't give me any information I could use to improve my
applications performance.
--
Danijel Tkalcec
www.deltasoft.hr/rtc/author.htm
RealThinClient components
-------------------------------------------
* The Easiest way to build Internet-enabled applications
- Clients, Stand-alone Servers, ISAPI extensions -
Quote
Write and Call Remote Functions
Download and Upload Files
Single- and Multi-Threaded mode
Firewall friendly - all over HTTP
Stress-tested for highest stability
www.realthinclient.com
or www.deltasoft.hr/rtc
 

Re:[ANN]ProDelphi 18.3 released (runtime measurement)

Which is why I personally use AQTime which is not a sampling profiler
and gives very useful results.
www.automatedqa.com
Rgds Pete
"Danijel Tkalcec [RTC]" <XXXX@XXXXX.COM>writes
Quote
The problem with Sampling Profilers is that they don't give accurate
information, since they check the app periodicaly, if there are a number
of small routines executed sporadicaly, they will miss most of the hits,
while
 

Re:[ANN]ProDelphi 18.3 released (runtime measurement)

Helmuth J.H. Adolph writes:
Quote
Version 18.3 of the high accuracy industry approved profiler for
Delphi (Win32) is available now.
[]
"industry approved" - approved by whom?
 

Re:[ANN]ProDelphi 18.3 released (runtime measurement)

Well, I don't want to be unfair to Sampling Profilers, so I have added a
checkbox to make the AppServer demo run in single-threaded mode, set the
sampling rate to 10.000 samples per second, set Profiler to start sampling
10 seconds after app has started and to sample for 300 seconds (having the
"Ignore TApplication.Idle OS Time" option enabled).
I've started the AppClient and set it to use 300 connections and flood the
AppServer, using automatic encryption and compression. Then, I have started
the AppServer, made it single-threaded with automatic enctryption and
compression and clicked "Listen" ... and so my testcase was running. A few
seconds later, Sampling Profiler statred measuring times, so there was no
time measured while I was preparing the test case.
After 300 seconds and 289K of sampling data collected, Profiler completed
the job. Since the test was running for 300 seconds with 10.000 samples per
second, it should have collected 10 times as much data (3.000K). The ammound
of data collected should be enough for about 1ms accuracy (1.000 per
second), which is pretty low, since that is one "tick" for each 1.000.000-th
CPU cycle on a 1 GHz PC.
And here are the result after this test ...
Modules (% global time)
---------------------------------------------
40,56% ntdll.dll =>called from
- 8,12% System.TryHarder
- 6,85% rtcHttpSrv.TRtcHttpServer.Flush
- 5,33% WSocket_rtc.TCustomWSocket.DoRecv
- 4,23% WSocket_rtc.TCustomWSocket.RealSend
- 2,52% Controls.FindVCLWindow
- 2,35% Forms.TApplication.ProcessMessages
- 2,31% System.SysGetMem
- 1,87% System.SysFreeMem
- 1,76% System.Decommit
- 1,12% Controls.FindControl
- 0,75% WSocket_rtc.TCustomWSocket.WMASyncSelect
- 0,42% Classes.TStringList.CompareStrings
- 0,39% Controls.AlignWork
- 0,31% rtcSyncObjs.TRtcCritSec.Enter
- 0,28% SysUtils.Now (I'm not calling this one)
- 0,26% WSocket_rtc.TCustomWSocket.SendStr
- 0,19% Clases.ResetSyncEvent
- 0,19% rtcInfo.TRtcFunctionInfo.Destroy
- 0,18% Forms.TApplication.DoActionIdle
- 0,18% WSocket_rtc.TCustomWSocket.TryToSend
- 0,18% System.Commit
- 0,17% Forms.TApplication.DoMouseIdle
- 0,14% rtcSyncObjs.TRtcCritSec.Leave
53,37% AppServer.exe
- 33,09% System
- 2,91% SysUtils
- 2,69% rtcInfo
- 1,78% Classes
- 1,65% rtcZlib
- 1,12% memStrObjList
- 1,03% Forms
All procedures (% global time)
-----------------------------------------
7,07% @FillChar
2,87% FillBeforeGap
2,54% SysGetMem
2,36% SysFreeMem
2,29% @LStrArrayChr
2,15% Move
1,27% FreeCurAlloc
1,25% TryHarder
--------------------------------------------
System unit calls (% glogbal time)
-----------------------------------------------------------
6,98% rtcZlib._memset
=>FillChar(p^, count,b);
3,53% System.MergeCommit
2,14% System.@FreeMem
1,70% System.@GetMem
1,68% System.SysGetMem
1,45% System.@LStrFromPCharLen
--------------------------------------------------------
At least, now I have got 1 point showing me a line in the Compression unit,
with 6,98% ticks. With 7.500 ticks caught by the profiler for more than
60.000 requests procesed, while every request calls this routine at least
once, it is just statistical chance it found one possible source of a
performance drain.
--
Danijel Tkalcec
www.deltasoft.hr/rtc/author.htm
RealThinClient components
-------------------------------------------
* The Easiest way to build Internet-enabled applications
- Clients, Stand-alone Servers, ISAPI extensions -
Quote
Write and Call Remote Functions
Download and Upload Files
Single- and Multi-Threaded mode
Firewall friendly - all over HTTP
Stress-tested for highest stability
www.realthinclient.com
or www.deltasoft.hr/rtc
 

Re:[ANN]ProDelphi 18.3 released (runtime measurement)

"Pete Fraser" writes:
Quote
Which is why I personally use AQTime which is not a sampling profiler
and gives very useful results.
www.automatedqa.com
Until now, I was my own code Profiler :o)
Anyway ... I have ordered ProDelphi,
just waiting for the package to arrive :)
--
Danijel Tkalcec
www.deltasoft.hr/rtc/author.htm
RealThinClient components
-------------------------------------------
* The Easiest way to build Internet-enabled applications
- Clients, Stand-alone Servers, ISAPI extensions -
Quote
Write and Call Remote Functions
Download and Upload Files
Single- and Multi-Threaded mode
Firewall friendly - all over HTTP
Stress-tested for highest stability
www.realthinclient.com
or www.deltasoft.hr/rtc
 

Re:[ANN]ProDelphi 18.3 released (runtime measurement)

Very good! I use it in 3 years.
Alex Zencovich
"Helmuth J.H. Adolph" <XXXX@XXXXX.COM>writes
Quote
Version 18.3 of the high accuracy industry approved profiler for
Delphi (Win32) is available now.

ProDelphi measures the runtime of Delphi applications with the granularity
of 1 CPU-cycle.

New in this version:
- optional german user interface
- minor bugfixes

The Delphi Magazine wrote about ProDelphi:
- "Only five minutes inclusive installation until identification of
critical areas ...",
- "an absolute bargain",
- "excellent documentation"


ProDelphi is available in two versions:
- A freeware version profiling up to 20 procedures
- A Professional version profiling up to 64000 procedures with some
additional features. Registration fee is 54.90 EUR.

Upgrade for future versions of Delphi for Win32 is free as usual !

Also available is a version for .Net applications (ProDelphi.Net).

Download via www.prodelphi.de