home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
-
-
- #define kLoopNumber 30000
- #define SetPtMacro(p,hh,vv) p.h=hh;p.v=vv
-
-
- /* Standard inits */
-
- static void InitToolbox(void) {
- InitGraf (&qd.thePort);
- InitFonts ();
- FlushEvents (everyEvent,0);
- InitWindows ();
- InitMenus ();
- TEInit ();
- InitDialogs (nil);
- InitCursor ();
- } /*InitToolbox*/
-
-
- void MySetPt(Point *thePoint, short h, short v)
- {
- thePoint->h = h;
- thePoint->v = v;
- } /*MySetPt*/
-
-
- typedef pascal void (*SetPtPtr)(Point *, short, short);
-
-
- void main(void)
- {
- long timeBefore,timeAfter;
- short loop;
- Point myPoint;
-
- SetPtPtr setPtAddress;
-
- InitToolbox();
-
- timeBefore = TickCount();
- for (loop = 0; loop < kLoopNumber; loop++)
- {
- SetPt(&myPoint, loop, loop);
- SetPt(&myPoint, loop, loop);
- SetPt(&myPoint, loop, loop);
- SetPt(&myPoint, loop, loop);
- SetPt(&myPoint, loop, loop);
- SetPt(&myPoint, loop, loop);
- SetPt(&myPoint, loop, loop);
- SetPt(&myPoint, loop, loop);
- SetPt(&myPoint, loop, loop);
- SetPt(&myPoint, loop, loop);
- }
- timeAfter = TickCount();
- printf("Trap call: %ld ticks for %ld calls.\n", timeAfter-timeBefore, (long)kLoopNumber*10);
-
-
- setPtAddress = (SetPtPtr) NGetTrapAddress(_SetPt,ToolTrap);
- // _SetPt = $A880;
- timeBefore = TickCount();
- for (loop = 0; loop < kLoopNumber; loop++)
- {
- (*setPtAddress)(&myPoint, loop, loop);
- (*setPtAddress)(&myPoint, loop, loop);
- (*setPtAddress)(&myPoint, loop, loop);
- (*setPtAddress)(&myPoint, loop, loop);
- (*setPtAddress)(&myPoint, loop, loop);
- (*setPtAddress)(&myPoint, loop, loop);
- (*setPtAddress)(&myPoint, loop, loop);
- (*setPtAddress)(&myPoint, loop, loop);
- (*setPtAddress)(&myPoint, loop, loop);
- (*setPtAddress)(&myPoint, loop, loop);
- }
- timeAfter = TickCount();
- printf("Trap direct: %ld ticks for %ld calls.\n", timeAfter-timeBefore, (long)kLoopNumber*10);
-
-
- timeBefore = TickCount();
- for (loop = 0; loop < kLoopNumber; loop++)
- {
- MySetPt(&myPoint, loop, loop);
- MySetPt(&myPoint, loop, loop);
- MySetPt(&myPoint, loop, loop);
- MySetPt(&myPoint, loop, loop);
- MySetPt(&myPoint, loop, loop);
- MySetPt(&myPoint, loop, loop);
- MySetPt(&myPoint, loop, loop);
- MySetPt(&myPoint, loop, loop);
- MySetPt(&myPoint, loop, loop);
- MySetPt(&myPoint, loop, loop);
- }
- timeAfter = TickCount();
- printf("Function call: %ld ticks for %ld calls.\n", timeAfter-timeBefore, (long)kLoopNumber*10);
-
-
- timeBefore = TickCount();
- for (loop = 0; loop < kLoopNumber; loop++)
- {
- SetPtMacro(myPoint, loop, loop);
- SetPtMacro(myPoint, loop, loop);
- SetPtMacro(myPoint, loop, loop);
- SetPtMacro(myPoint, loop, loop);
- SetPtMacro(myPoint, loop, loop);
- SetPtMacro(myPoint, loop, loop);
- SetPtMacro(myPoint, loop, loop);
- SetPtMacro(myPoint, loop, loop);
- SetPtMacro(myPoint, loop, loop);
- SetPtMacro(myPoint, loop, loop);
- }
- timeAfter = TickCount();
- printf("Macro: %ld ticks for %ld calls.\n", timeAfter-timeBefore, (long)kLoopNumber*10);
-
-
- } /*main*/
-