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

André Wendt andre.wendt at hpi.uni-potsdam.de
Mon Okt 8 20:03:51 UTC 2007


Hallo Torge,

danke für die umfassenden Erkenntnisse, ich werde das mal versuchen
nachzuvollziehen.

Mittlerweile habe ich die allgemeine Frage nach Benchmarking im
Simulator an die vm-dev-Liste weitergeleitet.

Viele Grüße,
André

Torge Husfeldt schrieb:
> 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é
>>   
> 
>