LibraryTimer v1.1 is a program available on aminet is really interesting for our goal. It gives the possility to know with accuracy the usage frequency of any kind of Amiga library.
A reminder for beginners: libraries for our Amiga are made of many functions that have a special use. For example, the function R_CacheFlush of exec.library allows to undo everything in the CPU code and data cache. For who is interested in this article: Warp3D drivers have functions too and LibraryTimer allows to know how many time programs using Warp3D (like Quake 2 for example) call a lot of available functions. The use for coders is to rework the most important functions: the ones that are often called. Of course, statistics change according to launched programs and possibly according to a game sequence. So for the time, we launch Quake 2 and its beginning.
Its usage is very easy. You just have to launch the game:
Then go back to the Workbench with Amiga-M then click on LibraryTimer program. Once loaded, you have to choose a library to examinate. For our example, it's WD3_AvengerLEMU.library and after click on "Patch":
Go back to the game, then play it for a short time: something like two minutes in order to have a statistic sample. Go back to the workbench then click on "Update". Here is the number of "calls" displayed for every function (Offset) :
We can already see that few functions are called for the short play of Quake 2. Function -$24 and -$40 have been used 571 time ($23B in hexadecimal) and 572 time ($23C). We can observe that "Time ticks" give the average time taken by the executed function: I don't know now if these results are serious and accurate.
Another function has been used many time. It's the -$6C with 6769 calls ($1A71) :
But there is something stronger for our example! -$19E called 206 387 times ($32633) !! It's incredible! -$1BC and -$1C2 around 108 390 times ($1A766) and 14 307 ($37E3) for the other :
It's perfectly clear: it's -$19E that need to be optimized as much as possible!! it's called by W3D_GetDriverTexFmtInfo from Warp3D.library :
So you have understood: LibraryTimer is useful for locating used function and what's most important the ones that are the most requested.
(translated by johnz)