So I decided to find out why Nuatilus delays to syntax highlight when I open ChronosManager I open my activity monitor to be amazed by the fact that pharo was consuming 30% of one of my cores. At the time I thought it was my fault because when my GUI steps I load from a png a form that I attack to a Morph. So I optomised that part loading all the pngs before hand , creating all the forms and during steping point only to the correct form. |
It depends on what you are doing in a step, but 1s step should not hurt.
May be the problem is somewhere else. With DrGeo, I noted Athens is faster to BitBlt with bitmap operations (in my case, only scaling and displaying a From in a DrGeo canvas). Also, do your bitmaps come with 32 bits depth? -- Dr. Geo http://drgeo.eu |
2016-01-15 21:53 GMT+01:00 Hilaire <[hidden email]>: It depends on what you are doing in a step, but 1s step should not hurt. I suspect Rubric. Old pharo withouth Rubric in Nautilus -> ~ 0.5 % Current Pharo with Rubric in Nautilus -> ~ 10 % both with a fresh image and only one Nautilus window open.
|
In reply to this post by HilaireFernandes
ITs not the step, I removed the step as I said in my first post. Still 30% cpu consumption The images are PNGs and RGBA , 8bitOn Fri, Jan 15, 2016 at 10:54 PM Hilaire <[hidden email]> wrote: It depends on what you are doing in a step, but 1s step should not hurt. |
taskbar was the problem, damn pharo gui is a huge pain in the hat.
On Fri, Jan 15, 2016 at 11:32 PM Dimitris Chloupis <[hidden email]> wrote:
|
> On 15 Jan 2016, at 23:30, Dimitris Chloupis <[hidden email]> wrote: > > taskbar was the problem, damn pharo gui is a huge pain in the hat. How so ? > On Fri, Jan 15, 2016 at 11:32 PM Dimitris Chloupis <[hidden email]> wrote: > ITs not the step, I removed the step as I said in my first post. Still 30% cpu consumption > > The images are PNGs and RGBA , 8bit > > > On Fri, Jan 15, 2016 at 10:54 PM Hilaire <[hidden email]> wrote: > It depends on what you are doing in a step, but 1s step should not hurt. > May be the problem is somewhere else. > With DrGeo, I noted Athens is faster to BitBlt with bitmap operations > (in my case, only scaling and displaying a From in a DrGeo canvas). > Also, do your bitmaps come with 32 bits depth? > > -- > Dr. Geo > http://drgeo.eu > > > |
2016-01-16 0:06 GMT+01:00 Sven Van Caekenberghe <[hidden email]>:
I would like to now that too. Btw, this is interesting too: WorldState debugShowDamage:true. And look all the flashing in a nautilus and or playground window.
|
2016-01-16 0:11 GMT+01:00 Nicolai Hess <[hidden email]>:
wasn't good.
|
In reply to this post by Sven Van Caekenberghe-2
taskbarTask
(self valueOfProperty: #noTaskbarTask ifAbsent: [ false ])
ifTrue: [ ^ nil ].
^ nil "TaskbarTask
morph: self
state: self taskbarState
icon: self taskbarIcon
label: self taskbarLabel" The uncommented part was the one that was slowing me down, its a copy from SystemWindow, on a new image of Pharo consumption drops to 15% but still have issues with Nautilus etc.latsabben at Slack also recommended caching which helped also taskbarTask "myTask := nil." myTask ifNil: [ myTask := TaskbarTask morph: self state: self taskbarState icon: self taskbarIcon label: self taskbarLabel ]. myTask label: self taskbarLabel. ^myTask On Sat, Jan 16, 2016 at 1:07 AM Sven Van Caekenberghe <[hidden email]> wrote:
|
In reply to this post by Nicolai Hess-3-2
and by the way menus on latest pharo 5 are broken On Sat, Jan 16, 2016 at 1:29 AM Nicolai Hess <[hidden email]> wrote:
|
In reply to this post by kilon.alios
On Sat, Jan 16, 2016 at 4:35 AM, Dimitris Chloupis
<[hidden email]> wrote: > So I decided to find out why Nuatilus delays to syntax highlight when I open > ChronosManager I open my activity monitor to be amazed by the fact that > pharo was consuming 30% of one of my cores. > > At the time I thought it was my fault because when my GUI steps I load from > a png a form that I attack to a Morph. So I optimised that part loading all > the pngs before hand , creating all the forms and during steping point only > to the correct form. > > Nope still 30% > > ok change step time to 1 sec > > Nope still 30% > > ok delete step and step time alltogether > > Nope still 30% > > so the only explanation left is that pharo does not like I use images , > which are not that big anyway , my whole image library is just 1 mb. > > So how I profile this ? Is there any way to find exactly where that 30% is > consumed ? See below > I tried to profile step and it retunred back with a mere 32ms , and I > suspect thats the first step that loads the images , the second step would > be much faster since it will just point to correct forms. So with a step of > 32ms max and stepping once per second why a 30% CPU consumption ? I loaded ChronosManager from the catalog, started it from the World menu, and I see 55% cpu. I googled for pharo profiling and found [1] which describes using World > System > Start Profiling All Processes. Profiled without & with your app running WorldMorph>>doOneCycle moved from 9% to 29% A couple of steps in I see #interCyclePause is the same at 9%, so your app seems full responsible for the 20% increase :) Drilling down (a long way) along the most expensive path until I find one of you classes (2.5%) ChrGUIMorph>>taskbarButtonFor: and a few steps further down (0.3%) ChrGUIMorph>>taskbarIcon then (0.3%) ImageReadWriter class>>formFromStream: then (0.3%) PNGReadWriter>>processNonInterlaced So its creating this icon every cycle. Modifying... ChrGUIMorph>>taskbarIcon ^ChrStopwatchSettingsPNG new logotinyIcon to... ChrGUIMorph>>taskbarIcon ^Smalltalk ui icons referencesIcon drops cpu usage to 9%, and if I close your app it drops to 6%. Profiling your app again, and again drilling down through WorldState>>doOneCycleNowFor: I see a long chain at 2.5% usage from WorldMorph>>runStepMethods all the way down to FileSystem>>entriedAt:ifAbsent:do. So filesystem access occuring every cycle is where the time is being spent. Along that chain I see ChrGUIMorph>>secondsFromTimerForm is calling ChronosManager>>workingPath outside of the nil check for the cache in secondsTimerFormCollection. Moving "wp := ChronosManager workingPath" inside the #ifNil: drops cpu usage to 7%. cheers -ben [1] http://pharobooks.gforge.inria.fr/PharoByExampleTwo-Eng/latest/Profiling.pdf |
In reply to this post by kilon.alios
On Sat, Jan 16, 2016 at 7:28 AM, Dimitris Chloupis
<[hidden email]> wrote: > taskbarTask (self valueOfProperty: #noTaskbarTask ifAbsent: [ false ]) > ifTrue: [ ^ nil ]. ^ nil "TaskbarTask morph: self state: self taskbarState > icon: self taskbarIcon label: self taskbarLabel" > > The uncommented part was the one that was slowing me down, its a copy from > SystemWindow, on a new image of Pharo consumption drops to 15% but still > have issues with Nautilus etc. > > latsabben at Slack also recommended caching which helped also > > taskbarTask "myTask := nil." myTask ifNil: [ myTask := TaskbarTask morph: > self state: self taskbarState icon: self taskbarIcon label: self > taskbarLabel ]. myTask label: self taskbarLabel. ^myTask > > Anyway I decided to port my project to C++ and Unreal Engine because I have > many issues with Pharo speed wise See my other post, in about an hour I moved your App from 55% cpu usage on my machine to 7%, only 1% above our 6% idle. We *do* need to address that minimum idle, but its at the VM level since in-Image profiling shows 90% time in ProcessorScheduler class>>idleProcess. So to me the Image seems not too bad performance wise > and stability wise with Pharo 5. Well, you are talking about bleeding edge alpha software. > Plus many IDE features I miss like proper auto completion etc. You've probably mentioned this somewhere previously, but in another thread could you leave us with a summary of what is missing from auto completion. > To be fair I tried to make custom gui with python and it was even slower in > the past. > > So its clear I need a high performance language + API, because I will be > building a very heavy GUI (many more animations) and I would like also some > fast 3d functionality too. good luck with it. cheers -ben > > On Sat, Jan 16, 2016 at 1:07 AM Sven Van Caekenberghe <[hidden email]> wrote: >> >> >> > On 15 Jan 2016, at 23:30, Dimitris Chloupis <[hidden email]> >> > wrote: >> > >> > taskbar was the problem, damn pharo gui is a huge pain in the hat. >> >> How so ? >> >> > On Fri, Jan 15, 2016 at 11:32 PM Dimitris Chloupis >> > <[hidden email]> wrote: >> > ITs not the step, I removed the step as I said in my first post. Still >> > 30% cpu consumption >> > >> > The images are PNGs and RGBA , 8bit >> > >> > >> > On Fri, Jan 15, 2016 at 10:54 PM Hilaire <[hidden email]> wrote: >> > It depends on what you are doing in a step, but 1s step should not hurt. >> > May be the problem is somewhere else. >> > With DrGeo, I noted Athens is faster to BitBlt with bitmap operations >> > (in my case, only scaling and displaying a From in a DrGeo canvas). >> > Also, do your bitmaps come with 32 bits depth? >> > >> > -- >> > Dr. Geo >> > http://drgeo.eu >> > >> > >> > >> >> > |
Hello Ben :) First thanks for investing 1 hour of your precious time to look through my code. I really appreciate it . If there is one thing I love about pharo is the super amazing community. On Sat, Jan 16, 2016 at 6:35 AM Ben Coman <[hidden email]> wrote: On Sat, Jan 16, 2016 at 7:28 AM, Dimitris Chloupis |
In reply to this post by Nicolai Hess-3-2
nicolai
I could not get what you wrote :) could you repeat it ? Le 15/1/16 22:21, Nicolai Hess a
écrit :
|
In reply to this post by kilon.alios
what was it? And we improved it a lot already. But this is not by accident that Alain spent a couple of years working on Bloc
|
In reply to this post by Nicolai Hess-3-2
Yes nautilus is full of wrong changed messages and others.
Stef Le 16/1/16 00:11, Nicolai Hess a
écrit :
|
In reply to this post by stepharo
Yeap I cannot wait for Bloc :) a big thanks to Alain, Bloc already looks amazing from the little I tried. I am sure the loading of PNGs will be optimised at some point too in the future. Everything is a matter of time. On Sat, Jan 16, 2016 at 10:08 AM stepharo <[hidden email]> wrote:
|
ok found how to update the taskbar button , I add this to my step pharo at 6-9% consumption of course depending on the size of the pharo window. Not bad at all :) World submorphs do: [ :each| (each isKindOf: TaskbarMorph) ifTrue: [each updateTaskButtons]] On Sat, Jan 16, 2016 at 10:12 AM Dimitris Chloupis <[hidden email]> wrote:
|
In reply to this post by kilon.alios
not the menus there is a problem with WideString and string primitives in latest spur vm. in the mean time you can download stable instead latest and you will be ok. Esteban
|
yes thanks Esteban I am back to Pharo 4 and I am fine :) will stick with it, till the release of Pharo 5. On Sat, Jan 16, 2016 at 12:25 PM Esteban Lorenzano <[hidden email]> wrote:
|
Free forum by Nabble | Edit this page |