Und zwar hatte ich mal letztes Jahr in einem Forum einen PROFILER für Blitzbasic2 angedeutet. Der war im Prinzip damals schon fertig, ich mußte nur noch die Zeitmessung dazubauen. Da half mir dann noname/haujobb aus.
Wieauchimmer, ich habe es jetzt (mit den gegenwärtigen Spezifikationen) fertig.
Über die Distribution muß ich noch nachdenken, ist ja kein OpenSource aber kosten soll es natürlich auch nix.
Vielleicht ein Precompile-Include oder so.
Was tut es?
Es stellt einfache Methoden zur Verfügung, benutzte Prozeduren zu zählen und die darin verbrachte Zeit zu messen.
(man muß natürlich die für das Profiling selbst benutzte Zeit im Auge behalten).
Dafür fügt man in jede zu überwachende Prozedur einen "Entry" und am Ende einen "Exit" Aufruf ein.
Am Ende kann man (bisher) ein paar Statistiken ausgeben:
Schaut mal unten auf das Beispiel, das ist kurz und verständlich.
Da ist natürlich eine GUI geplant, und statistische Auswertungen und und und.
Ist vielleicht ganz sinnvoll?
Code:
;
;test of stat/debug/ profiler possibilities
;
;by frank b., germany
;
;the symbols have obscure names to not interfere
; with others, as this is supposed to be "invisible",
; like an include or something
;
;todo: add timer stuff to really measure somethin
; add memdump/save instead of array()
; add gui
;history
; done timing support
; seems like we are shipping this version!
; 08.DEC.2019
Ich habe mal ein simples Beispiel vorbereitet, das einzelne Teile aus einem String herauslöst. Man kann das z.B. benutzen als Argumentparser, Wortzähler usw..
Es nutzt hier nur Leerzeichen als Trenner, man kann das aber natürlich anpassen auf ganze Strings von Worttrennern, wenn man will.
Ich hab' endlich den Imagebutton für das 5-Sterne-System in OBST runderneuert; jetzt funktioniert es.
Wird demnächst eingebaut. Es erfordert zur Zeit noch einen dirty HW-Zugriff auf den MouseButton, aber das fixe ich noch; da gibt es Timingprobleme oder so mit der Echtzeitabfrage via MUI.
Wird dann alsbald eingebaut.
Zur Info:
Es ist ein 5-Sterne-Voting-Button, der auch dragging erlaubt; er gibt 0-5 oder Fail=-1 zurück, als Resultat.
Er ist angedacht, um bei OBST jedes Game zu bewerten (wird im PAKs Ordner des Spiels gespeichert). Da ist bisher ein doofer CycleButton.
Hier ein exe als Beispiel zum Testen, bitte vom CLI starten wegen der Ausgabe!!
MultiColor bekomme ich nicht vernünftig hin; die Farben sind immer falsch, auch wenn es funktioniert. Ich habe hier aber noch MUI3.8, ob das mit 3.9 besser ist oder ggfls. mit NBitmap.mui, das probiere ich noch.
Hi.
Ich hatte das mal auf a1k.org vorgeschlagen, als Tool, was in das WBStartup-Verzeichnis installiert wird bei einer Neuinstallation des Systems (namentlich 3.1.4).
Es ist nicht fertig und leider sehr groß (84kB), aber das Prinzip ist doch recht interessant, finde ich!?
xpe(0)=-13 ;offset for even planes start at ypos=0
;not quite accurate! sub-pixel fetch or what the hell....
While Joyb(0)=0
For a=1 To 253
d.q+Pi/18:If d>tpi Then d=0.0
c.q=Sin(d)+(MouseX-160)/160
xpo(a)=c
xpe(a)=c ;same as odd, but with offset
Next
VWait
DisplayScroll1,&xpo(0),&xpe(0);,-13 offset does not work here?
VWait
Wend
VWait25
QAMIGA
End
NoCli:CloseEd
In Fett habe ich mal die dicksten Brummer markiert:
wenn man dort ansetzt (precalc, Tabelle), dann läuft es auch auf dem Standard A1200 mit etwas FastRAM schnell!
Und hier noch die letzte Version.
Da ist der SIN() noch nicht rausoptimiert als Tabelle/Array, aber es reicht auch so....
(getestet auf der realen Maschine, nicht UAE)
Das Pic ist mit drin, ein Exe, und auch der orig. Src vom BUM.
Verdammt, ich kann kein LHA anhängen!