vendredi 31 mai 2013

LibraryTimer (II) [eng]

Looking closer at the source of the W3D_AvengerLEMU.library, I noticed that the internal functions are called directly by the bsr and not by the FunctionTable:

However, the LibraryTimer patches the library's FunctionTable to insert a counter and even a measure of time. Well, LibraryTimer will not add it in its statistics using this bsr. The solution is simple, just replace it with a jsr, being sure that a6 is the basis address of the W3D_AvengerLEMU.library:

All in all, there were less than a dozen of bsr calls. Now, we have more understandable statistics with LibraryTimer:

The -$3C function seems to be the most used one: it will be necessary to be sly as a fox to reduce instructions as much as possible. Here, every saved cycle is very important.

Here are the new statistics:
  • fonction -$24: 382 fois
  • fonction -$36: 1 fois
  • fonction -$3C: 367 558 fois
  • fonction -$5A: 110 fois
  • fonction -$90: 23 fois
  • fonction -$AE: 1 fois
  • fonction -$B4: 845 fois
  • fonction -$BA: 884 fois
  • fonction -$D8: 2 357 fois
  • fonction -$DE: 452 fois
  • fonction -$E4: 383 fois
  • fonction -$EA: 228 fois
  • fonction -$108: 10 fois
  • fonction -$10E: 382 fois
  • fonction -$114: 383 fois
  • fonction -$144: 5 054 fois
  • fonction -$14A: 1 fois
  • fonction -$162: 354 fois
  • fonction -$180: 1 fois
  • fonction -$198: 24 233 fois
  • fonction -$19E: 113 013 fois
  • fonction -$1B6: 150 286 fois
  • fonction -$1C2: 6 524 fois

Now, using the very same method for the Warp3D.library, with the same game Quake 2:
  • W3D_SetState: 7 932  fois
  • W3D_LockHardware: 387 fois
  • W3D_UnLockHardware: 386 fois
  • W3D_WaitIdle: 386 fois
  • W3D_AllocTexObj: 1 fois
  • W3D_SetFilter: 3 fois
  • W3D_SetTexEnv: 2 318 fois
  • W3D_SetWrapMode: 1 fois
  • W3D_SetBlendMode: 1 011 fois
  • W3D_SetDrawRegion: 387 fois
  • W3D_ClearZBuffer: 387 fois
  • W3D_SetZCompareMode: 387 fois
  • W3D_SetCurrentColor: 4 257 fois
  • W3D_DrawTriFanV: 68 170 fois
  • W3D_DrawTriStripV: 19 480 fois
  • W3D_DrawArray: 142 166 fois


Now, work of re-programming can begin seriously, the coder knows exactly where to start in order to obtain results in terms of speed, visible to the naked eye.

(translated by CrashMidnick)
  

Aucun commentaire:

Enregistrer un commentaire

Laissez vos commentaires ici :