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

Levente Uzonyi leves at elte.hu
Tue Nov 9 05:29:04 CET 2010


On Tue, 9 Nov 2010, 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?

I think you could measure it with the simulator. But these snippets are so 
simple that they only use at most few kilobytes.

>
> 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?

You misunderstood Pharo's claims. It doesn't mean that running code in 
Pharo will use less memory than in Squeak. It means that the image is 
smaller, because it contains less stuff. So, there's nothing to be 
proven. Btw it's funny that you refer to Squeak as "old".

>
> And no, MessageTally spyOn: does not do right!

MessageTally is for measuring runtime, not space. But I guess the GC 
statistics are reliable, so the allocated memory and time spent in GC is 
correct even on CogVM. But your code runs too fast for MessageTally.


Levente

>
> Tnx in advance, Guido Stepken
>
>
>




More information about the Pharo-project mailing list