pharo-graphics / Bloc

Low-level UI infrastructure & framework for Pharo
MIT License
80 stars 39 forks source link

Bloc seems much slower on P12 #557

Open plantec opened 1 month ago

plantec commented 1 month ago

no idea where it can come from but the difference is obvious watching at theses video (the slower is on p12)

https://github.com/user-attachments/assets/5210eee4-a48b-4cca-a1fe-48477f1040e1

https://github.com/user-attachments/assets/74d17fa8-5237-4c68-8e43-0efe81126243

https://github.com/user-attachments/assets/94fe579e-180c-49cc-8c17-a4179beedd79

https://github.com/user-attachments/assets/ef16b40f-3a8e-424d-bca4-a6fd9dc1f359

Rinzwind commented 1 month ago

In the first video, it looks like you have the world renderer canvas scale factor set to 2, while you are using a version of Bloc that does not include the changes of pull request #465. That combination makes the drawing of a BlMorphicSpaceHostMorph slower because the Bloc space form has scale 1 and gets scaled to scale 2 every time it is drawn. You could set the world renderer canvas scale factor to 1 as follows:

OSWorldRenderer autoSetCanvasScaleFactor: false; canvasScaleFactor: 1

But I would suggest to instead update the version of Bloc to one including the changes of pull request #465. Those changes were applied to the ‘Pharo12’ branch as well in pull request #537.

For the following screenshot, I created new Pharo 12 build 1521 images and used the menu item ‘Load Toplo and Bloc’, the image on the left has the world renderer canvas scale factor set to 1 and the image on the right has it set to 2, the text on the right looks better in both the Morphic and Bloc parts (click to zoom in):

plantec commented 1 month ago

Thanks ! Now the BlMorphicSpaceHostMorph works as expected and I can continue to use it :). It is more confortable for running examples. Now, the loss of efficiency of Bloc in general still remains. One can compare with ToListElementStresserWithAdditionalSelecters runInSDL

labordep commented 1 month ago

Seems similar on my PC, in fact difficult to see the difference (P11 to the right).

https://github.com/user-attachments/assets/3e2dcdae-ce9c-4e51-a548-51e6df933d67

My config:

tinchodias commented 1 month ago

FYI, the BlocBenchs project gathers benchmarking utilities for Bloc, and now there is BlbSpaceTallyPrinter runToStdout that filters the results of SpaceTally and prints it in a table.

The results show a huge growth of instances during the execution of ToListElementStresserWithAdditionalSelecters (a stress demo). When I close the window of this demo and check the space tally again, the table returns to the initial situation. So nothing indicates a memory leak, but we may need to trigger garbage collection passes to wipe some of the tons of instances that are accumulated by this stress demo.