Pharo 4.0 -- Inspecting a recursive data structure is slow
Hello I have realized that inspecting a recursive data structure is very slow in Pharo 4.0 A test case: | myDict | myDict := Dictionary new. myDict at: #hello put: 'hello'. myDict at: #recurHello put: myDict. myDict inspect It takes a long time for the inspector to come up. And the image freezes later on if you continue. The problem is with the inspector because if I do | myDict | myDict := Dictionary new. myDict at: #hello put: 'hello'. myDict at: #recurHello put: myDict. 3 + 4 inspect it comes up instantly. As a comparison I attach the Cuis ** test result. The inspector comes up instantly and the image does not have any problems. What are the workarounds in Pharo 4.0? - Setting a time out somewhere? - Disabling certain functions? - Loading a simpler inspector? Regards Hannes ** current build 2463.image https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
Hi Hannes, Can open a bug report? I though most recursive problems were fixed in the new inspector. Seems that there are still some related to printing recursive structures. You can switch to the previous inspector (GTInspector setGTInspectorEnabledStatus: false), however, this bug seem to also kill that inspector. Cheers, Andrei On Sat, Aug 29, 2015 at 7:16 AM, H. Hirzel <hannes.hirzel@gmail.com> wrote:
Hello
I have realized that inspecting a recursive data structure is very slow in Pharo 4.0
A test case:
| myDict | myDict := Dictionary new. myDict at: #hello put: 'hello'. myDict at: #recurHello put: myDict. myDict inspect
It takes a long time for the inspector to come up. And the image freezes later on if you continue.
The problem is with the inspector because if I do | myDict | myDict := Dictionary new. myDict at: #hello put: 'hello'. myDict at: #recurHello put: myDict. 3 + 4 inspect
it comes up instantly.
As a comparison I attach the Cuis ** test result. The inspector comes up instantly and the image does not have any problems.
What are the workarounds in Pharo 4.0?
- Setting a time out somewhere? - Disabling certain functions? - Loading a simpler inspector?
Regards
Hannes
** current build 2463.image https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
Andrei, Thanks for confirming the bug. Report is here https://pharo.fogbugz.com/f/cases/16425/Pharo-4-0-Inspecting-a-recursive-dat... --Hannes On 8/29/15, Andrei Chis <chisvasileandrei@gmail.com> wrote:
Hi Hannes,
Can open a bug report? I though most recursive problems were fixed in the new inspector. Seems that there are still some related to printing recursive structures.
You can switch to the previous inspector (GTInspector setGTInspectorEnabledStatus: false), however, this bug seem to also kill that inspector.
Cheers, Andrei
On Sat, Aug 29, 2015 at 7:16 AM, H. Hirzel <hannes.hirzel@gmail.com> wrote:
Hello
I have realized that inspecting a recursive data structure is very slow in Pharo 4.0
A test case:
| myDict | myDict := Dictionary new. myDict at: #hello put: 'hello'. myDict at: #recurHello put: myDict. myDict inspect
It takes a long time for the inspector to come up. And the image freezes later on if you continue.
The problem is with the inspector because if I do | myDict | myDict := Dictionary new. myDict at: #hello put: 'hello'. myDict at: #recurHello put: myDict. 3 + 4 inspect
it comes up instantly.
As a comparison I attach the Cuis ** test result. The inspector comes up instantly and the image does not have any problems.
What are the workarounds in Pharo 4.0?
- Setting a time out somewhere? - Disabling certain functions? - Loading a simpler inspector?
Regards
Hannes
** current build 2463.image https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
It seems to be fixed in Pharo5 already. Debugger comes up within less than a second and is usable. Marcus
On 29 Aug 2015, at 11:57, H. Hirzel <hannes.hirzel@gmail.com> wrote:
Andrei,
Thanks for confirming the bug.
Report is here
https://pharo.fogbugz.com/f/cases/16425/Pharo-4-0-Inspecting-a-recursive-dat...
--Hannes
On 8/29/15, Andrei Chis <chisvasileandrei@gmail.com> wrote:
Hi Hannes,
Can open a bug report? I though most recursive problems were fixed in the new inspector. Seems that there are still some related to printing recursive structures.
You can switch to the previous inspector (GTInspector setGTInspectorEnabledStatus: false), however, this bug seem to also kill that inspector.
Cheers, Andrei
On Sat, Aug 29, 2015 at 7:16 AM, H. Hirzel <hannes.hirzel@gmail.com> wrote:
Hello
I have realized that inspecting a recursive data structure is very slow in Pharo 4.0
A test case:
| myDict | myDict := Dictionary new. myDict at: #hello put: 'hello'. myDict at: #recurHello put: myDict. myDict inspect
It takes a long time for the inspector to come up. And the image freezes later on if you continue.
The problem is with the inspector because if I do | myDict | myDict := Dictionary new. myDict at: #hello put: 'hello'. myDict at: #recurHello put: myDict. 3 + 4 inspect
it comes up instantly.
As a comparison I attach the Cuis ** test result. The inspector comes up instantly and the image does not have any problems.
What are the workarounds in Pharo 4.0?
- Setting a time out somewhere? - Disabling certain functions? - Loading a simpler inspector?
Regards
Hannes
** current build 2463.image https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
Was there an issue/fix for this in Pharo 5? It might be worth backporting to Pharo 4. On Sat, Aug 29, 2015 at 12:06 PM, Marcus Denker <marcus.denker@inria.fr> wrote:
It seems to be fixed in Pharo5 already. Debugger comes up within less than a second and is usable.
Marcus
On 29 Aug 2015, at 11:57, H. Hirzel <hannes.hirzel@gmail.com> wrote:
Andrei,
Thanks for confirming the bug.
Report is here
https://pharo.fogbugz.com/f/cases/16425/Pharo-4-0-Inspecting-a-recursive-dat...
--Hannes
On 8/29/15, Andrei Chis <chisvasileandrei@gmail.com> wrote:
Hi Hannes,
Can open a bug report? I though most recursive problems were fixed in the new inspector. Seems that there are still some related to printing recursive
structures.
You can switch to the previous inspector (GTInspector setGTInspectorEnabledStatus: false), however, this bug seem to also kill that inspector.
Cheers, Andrei
On Sat, Aug 29, 2015 at 7:16 AM, H. Hirzel <hannes.hirzel@gmail.com>
wrote:
Hello
I have realized that inspecting a recursive data structure is very slow in Pharo 4.0
A test case:
| myDict | myDict := Dictionary new. myDict at: #hello put: 'hello'. myDict at: #recurHello put: myDict. myDict inspect
It takes a long time for the inspector to come up. And the image freezes later on if you continue.
The problem is with the inspector because if I do | myDict | myDict := Dictionary new. myDict at: #hello put: 'hello'. myDict at: #recurHello put: myDict. 3 + 4 inspect
it comes up instantly.
As a comparison I attach the Cuis ** test result. The inspector comes up instantly and the image does not have any problems.
What are the workarounds in Pharo 4.0?
- Setting a time out somewhere? - Disabling certain functions? - Loading a simpler inspector?
Regards
Hannes
** current build 2463.image https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
On 8/29/15, Andrei Chis <chisvasileandrei@gmail.com> wrote:
Was there an issue/fix for this in Pharo 5? It might be worth backporting to Pharo 4.
If it is not a big effort, yes please.
On Sat, Aug 29, 2015 at 12:06 PM, Marcus Denker <marcus.denker@inria.fr> wrote:
It seems to be fixed in Pharo5 already. Debugger comes up within less than a second and is usable.
Marcus
On 29 Aug 2015, at 11:57, H. Hirzel <hannes.hirzel@gmail.com> wrote:
Andrei,
Thanks for confirming the bug.
Report is here
https://pharo.fogbugz.com/f/cases/16425/Pharo-4-0-Inspecting-a-recursive-dat...
--Hannes
On 8/29/15, Andrei Chis <chisvasileandrei@gmail.com> wrote:
Hi Hannes,
Can open a bug report? I though most recursive problems were fixed in the new inspector. Seems that there are still some related to printing recursive
structures.
You can switch to the previous inspector (GTInspector setGTInspectorEnabledStatus: false), however, this bug seem to also kill that inspector.
Cheers, Andrei
On Sat, Aug 29, 2015 at 7:16 AM, H. Hirzel <hannes.hirzel@gmail.com>
wrote:
Hello
I have realized that inspecting a recursive data structure is very slow in Pharo 4.0
A test case:
| myDict | myDict := Dictionary new. myDict at: #hello put: 'hello'. myDict at: #recurHello put: myDict. myDict inspect
It takes a long time for the inspector to come up. And the image freezes later on if you continue.
The problem is with the inspector because if I do | myDict | myDict := Dictionary new. myDict at: #hello put: 'hello'. myDict at: #recurHello put: myDict. 3 + 4 inspect
it comes up instantly.
As a comparison I attach the Cuis ** test result. The inspector comes up instantly and the image does not have any problems.
What are the workarounds in Pharo 4.0?
- Setting a time out somewhere? - Disabling certain functions? - Loading a simpler inspector?
Regards
Hannes
** current build 2463.image https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
On 29 Aug 2015, at 12:58, Andrei Chis <chisvasileandrei@gmail.com> wrote:
Was there an issue/fix for this in Pharo 5? It might be worth backporting to Pharo 4.
Maybe one related to what is printed for the dictionary. It used to be very slow for large collections https://pharo.fogbugz.com/f/cases/15311/The-display-string-for-collection-ma...
As for me no need to hurry. I switch now to Pharo 5 build 50287 in the meantime. I will continue using that if I do not run into larger problems. --Hannes On 8/29/15, Marcus Denker <marcus.denker@inria.fr> wrote:
On 29 Aug 2015, at 12:58, Andrei Chis <chisvasileandrei@gmail.com> wrote:
Was there an issue/fix for this in Pharo 5? It might be worth backporting to Pharo 4.
Maybe one related to what is printed for the dictionary. It used to be very slow for large collections
https://pharo.fogbugz.com/f/cases/15311/The-display-string-for-collection-ma...
No this doesn't even fully work for the GTInspector (even not in Pharo 5.0). It is the same issue Ben discovered when working with the pointer explorer. (http://forum.world.st/Proposal-for-LiteralArray-class-tp4803015.html and http://forum.world.st/Fwd-14827-ProtoObject-pointersTo-failing-circular-refe... ) The problem is that arrays printOn: does not check for already visited objects (squeak does this, but the implementation in pharo changed). For example, in Pharo 50 | myDict | myDict := Dictionary new. myDict at: #hello put: 'hello'. myDict at: #recurHello put: myDict. myDict inspect you can open the inspector, but selecting the first element in the "keys" tab makes the image unresponsive. The same happens if you select the #array instvar in the "raw" tab. 2015-08-29 15:16 GMT+02:00 H. Hirzel <hannes.hirzel@gmail.com>:
As for me no need to hurry. I switch now to Pharo 5 build 50287 in the meantime. I will continue using that if I do not run into larger problems.
--Hannes
On 8/29/15, Marcus Denker <marcus.denker@inria.fr> wrote:
On 29 Aug 2015, at 12:58, Andrei Chis <chisvasileandrei@gmail.com>
wrote:
Was there an issue/fix for this in Pharo 5? It might be worth backporting to Pharo 4.
Maybe one related to what is printed for the dictionary. It used to be very slow for large collections
https://pharo.fogbugz.com/f/cases/15311/The-display-string-for-collection-ma...
On 8/29/15, Marcus Denker <marcus.denker@inria.fr> wrote:
It seems to be fixed in Pharo5 already. Debugger comes up within less than a second and is usable.
Very welcome. I assume you mean 'Inspector' (not debugger)
Marcus
On 29 Aug 2015, at 11:57, H. Hirzel <hannes.hirzel@gmail.com> wrote:
Andrei,
Thanks for confirming the bug.
Report is here
https://pharo.fogbugz.com/f/cases/16425/Pharo-4-0-Inspecting-a-recursive-dat...
--Hannes
On 8/29/15, Andrei Chis <chisvasileandrei@gmail.com> wrote:
Hi Hannes,
Can open a bug report? I though most recursive problems were fixed in the new inspector. Seems that there are still some related to printing recursive structures.
You can switch to the previous inspector (GTInspector setGTInspectorEnabledStatus: false), however, this bug seem to also kill that inspector.
Cheers, Andrei
On Sat, Aug 29, 2015 at 7:16 AM, H. Hirzel <hannes.hirzel@gmail.com> wrote:
Hello
I have realized that inspecting a recursive data structure is very slow in Pharo 4.0
A test case:
| myDict | myDict := Dictionary new. myDict at: #hello put: 'hello'. myDict at: #recurHello put: myDict. myDict inspect
It takes a long time for the inspector to come up. And the image freezes later on if you continue.
The problem is with the inspector because if I do | myDict | myDict := Dictionary new. myDict at: #hello put: 'hello'. myDict at: #recurHello put: myDict. 3 + 4 inspect
it comes up instantly.
As a comparison I attach the Cuis ** test result. The inspector comes up instantly and the image does not have any problems.
What are the workarounds in Pharo 4.0?
- Setting a time out somewhere? - Disabling certain functions? - Loading a simpler inspector?
Regards
Hannes
** current build 2463.image https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
On 29 Aug 2015, at 13:27, H. Hirzel <hannes.hirzel@gmail.com> wrote:
On 8/29/15, Marcus Denker <marcus.denker@inria.fr> wrote:
It seems to be fixed in Pharo5 already. Debugger comes up within less than a second and is usable.
Very welcome. I assume you mean 'Inspector' (not debugger)
Yes. Marcus
participants (4)
-
Andrei Chis -
H. Hirzel -
Marcus Denker -
Nicolai Hess