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

André Wendt andre.wendt at hpi.uni-potsdam.de
Die Okt 9 07:29:42 UTC 2007


Hmm, ich hatte gehofft, ich hätte mich nur vertippt, hab's aber
tatsächlich an die vm-dev- statt an die squeak-dev-Liste geschickt.

Ich hoffe, ich kann den Zorn der Götter nochmal abwenden... Wünscht mir
Glück! ;-)

André

Bert Freudenberg schrieb:
> Ähm, wieso gerade die vm-dev-Liste? Das ist *nicht* der Interpreter- 
> Simulator aus dem VMMaker-Paket, hat also mit der VM nicht direkt zu  
> tun. Oder vermutest du einen VM-Bug?
> 
> - Bert -
> 
> On Oct 8, 2007, at 22:03 , André Wendt wrote:
> 
>> 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é
>>>>
>>>