[Pharo-project] Howto measure memory footprints of functions/objects/libraries in Pharo?

Alexandre Bergel alexandre at bergel.eu
Tue Nov 9 22:42:52 CET 2010


Hi Max,

> Um... I should be able to get a visualisation by running somthing like this right (I only installed it, didn't subclass anything)?
> 
> MemoryProfiler
> 	viewProfiling: [ FSDiskFilesystem current working / foo ].
> 
> I get a window but there's nothing in it...

The piece of code you want to profile needs is executed twice, and it needs "to be time consuming" (~ 1 second).
For example, try:

	MemoryProfiler
		viewProfiling: [ 
			| view |

			view := MOViewRenderer new.
			view nodes: (1 to: 5000).
			view root applyLayout ]

or 

	MemoryProfiler
		viewProfiling: [ (1 to: 2) collect: [ :i | ConfigurationOfMetacello project currentVersion ] ]

to get a nice picture

> Also, is selecting the expression in the block above, right clicking and selecting "memory profile it" equivalent to sending #viewProfiling: ?

yes

> Reading your paper I get the idea that this should work, when looking at the instructions on the moose site it rather seems that I need to subclass MemoryProfiler to actually profile anything.

No need to subclass.

Cheers,
Alexandre

> 
> 
> 
> On 09.11.2010, at 15:02, Alexandre Bergel wrote:
> 
>> Ok, but please, provide feedback.
>> 
>> Alexandre
>> 
>> 
>> On 9 Nov 2010, at 10:40, Max Leske wrote:
>> 
>>> Sounds like what I just needed! I'll try it out.
>>> 
>>> Cheers,
>>> Max
>>> 
>>> 
>>> On 09.11.2010, at 12:42, Alexandre Bergel wrote:
>>> 
>>>> Hi Guido,
>>>> 
>>>> We wrote a profiler to keep track of memory consumption. 
>>>> 
>>>> http://bergel.eu/download/papers/Berg10g-MemoryProfiling.pdf
>>>> 
>>>> It will be presented at Smalltalks next week.
>>>> 
>>>> Cheers,
>>>> Alexandre
>>>> 
>>>> On 8 Nov 2010, at 23:47, Guido Stepken wrote:
>>>> 
>>>>> E.g.: Three different solutions for a Euler problem:
>>>>> 
>>>>> (1 to: 999) inject: 0 into: [:sum :i | (i \\ 3 = 0) | (i \\ 5 = 0)
>>>>> 		ifTrue: [sum + i]
>>>>> 		ifFalse: [sum]]
>>>>> 
>>>>> 
>>>>> (1 to: 999) detectSum: [:i | (i \\ 3 = 0) | (i \\ 5 = 0) ifTrue: [i] ifFalse: [0]]
>>>>> 
>>>>> (1 to: 999) detectSum: [:i | i * (#(0 0 1 0 1 1 0 0 1 1 0 1 0 0 1) atWrap: i)]
>>>>> 
>>>>> How do i measure the exact memory footprint of each solution?
>>>>> 
>>>>> Pharo claims having reduced memory footprint at many places. Can that be proofed, e.g. with one comparable demo app, once run in old squeak, once in Pharo 1.1/1.2?
>>>>> 
>>>>> And no, MessageTally spyOn: does not do right!
>>>>> 
>>>>> Tnx in advance, Guido Stepken
>>>>> 
>>>>> 
>>>> 
>>>> -- 
>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>>> Alexandre Bergel  http://www.bergel.eu
>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
>> -- 
>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>> Alexandre Bergel  http://www.bergel.eu
>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>> 
>> 
>> 
>> 
>> 
>> 
> 
> 

-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.









More information about the Pharo-project mailing list