Thanks Alexandre.
Now I tried out your example and they worked perfectly. I have run into two
problem though which I don't know how to deal with:
1. When I run anything else than what you suggested, I do get the window for
the profiling view but it is empty. E.g when I run this:
MemoryProfiler
viewProfiling: [ 1 to: 100000 do: [ :i |
(FSMemoryFilesystem new root / ('foo', i asString))
writeStreamDo: [ :stream | stream nextPutAll:
'foo' ] ] ]
2. When I run the code I am actually interested I get a low space warning.
Example:
repo := FSGitRepository on: FSMemoryFilesystem new root / 'foo'
MemoryProfiler
viewProfiling: [ repo head ]
I'll be happy to run any tests you suggest. If you'd like to run the code
yourself, get the packages from Gofer:
Gofer new
squeaksource: 'GitFS';
package: 'FS-Git';
package: 'Filesystem';
load.
Cheers,
Max
On 09.11.2010, at 22:42, Alexandre Bergel wrote:
> 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
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>
>
>