[Squeak-ev] Benchmarks im Context-Step-Simulator aufrufen

Torge Husfeldt jean-jacques.gelee at gmx.de
Mon Okt 8 11:17:57 UTC 2007


Hallo André,

Ich habe mal versucht, das Problem nachzuvollziehen und mir sind dabei
mehrere Dinge aufgefallen.
1. Im aktuellen Squeak-dev-Image (3.9) konnte ich die MakroBenchmarks
nicht finden, ich habe sie von SqueakMap nachgeladen (für 3.7)
- a) diese Version musste ich leicht anpassen, damit sie überhaupt läuft
und dabei musste ich den benchmark3 auskommentieren, weil dieser intern
auch wieder simuliert, was schiefgeht
2. Alle Fehler während der Simulation werden vom mit der selben
aussagearmen Fehlermeldung an den User zurückgegeben.
a) die eigentliche Fehlermeldung findet sich dann im 7. Eintrag des
Stacks, wenn man in die lokale Variable arguments schaut.
In meinem Fall bin ich dort auf ein Message not understood: quo:
gestossen. Dann habe ich mich durch die Sender-chain nach oben gehangelt
(wie es sonst auch der Debugger machen würde) und bin beim Aufruf von
Smalltalk timeStamp: gelandet.
Irgendwo in dieser Kette wird das aktuelle Datum in Nanosekunden
ausgerechnet und dann als argument an Duration>>nanoSeconds: übergeben.
Wie man sich leicht vorstellen kann, handelt es sich dabei um einen
Large Integer, der irgendwie bei dieser Übergabe in ein Array
umgewandelt wird (frag nicht wie, soweit bin ich noch nicht, aber es
orientiert sich am printString (der LargeInt ist in meinem Beispiel
212058345600 und das Array ist #(212 58345600) )), das dann natürlich
kein quo: versteht.

Scheint mir im Moment noch ziemlich verworren. Man sollte einen Debugger
extra für den Simulator schreiben (oder den jetzigen anpassen).

Gruss, Torge

André Wendt schrieb:
> Hallo *,
>
> beim Versuch, den Code
>
> ContextPart tallyInstructions: [MacroBenchmarks run]
>
> auszuführen, erhalte ich den Fehler "context not in process". Einen
> Report zu ähnlichen Aufrufen habe ich bereits unter
> <http://bugs.squeak.org/view.php?id=5716> gefunden. Meine Fragen dazu:
>
> Woran liegt das?
>
> Kennt jemand komplexere Benchmarks als Integer>>#benchmark und
> Integer>>#benchFib, die im Simulator funktionieren?
>
> Gibt es andere Möglichkeiten als den Simulator, um die ausgeführten
> Instruktionen zu analysieren?
>
> Grüße,
> André
>