[Pharo-project] FilePlugin rant

Philippe Marschall philippe.marschall at netcetera.ch
Thu Mar 1 08:30:05 EST 2012


On 03/01/2012 11:14 AM, Sven Van Caekenberghe wrote:
> Camillo,
>
> On 01 Mar 2012, at 10:54, Camillo Bruni wrote:
>
>>  I recently started to hack around Monticello due to very low response times
>>  when having a huge package cache.
>>
>>  Now interestingly the FilePlugin primitives for listing files are horrible!
>>
>>  Example:
>>  -----------------------------------------------------------
>>  MC often requests a list of all mzc's cached locally:
>>  (FileDirectory default / 'package-cache') entries
>>
>>  In my case there are 4300 mczs in the shared package-cache
>>  timeToRun yields a nightmarish 2050ms for this,
>>  further investigation leads to the fact that most of the time is spent in the
>>  file primitive!
>>
>>  Now thats some 2ms for a single directory entry!
>>  [Just as a side note, ruby1.8 does the same job in 10ms :D]
>>  -----------------------------------------------------------
>>
>>  primLookupEntryIn: fullPath index: index
>>  <primitive: 'primitiveDirectoryLookup' module: 'FilePlugin'>
>>
>>  -----------------------------------------------------------
>>
>>  I think we should definitely add another primitive which directly lists
>>  the file under a certain path.
>>
>>  Of course this will break compatibility with existing code, but
>>  I think the current approach does not scale...
>>
>>  best
>>  cami
>
> I have
>
> (FileDirectory default / 'package-cache') entries size 5053
> [ (FileDirectory default / 'package-cache') entries ] timeToRun 2012
>
> But if I run it in the Time Profiler, I get this:
>
>
> How do you manage to track the primitive ?

You could give SystemProfiler a shot.

  [1] http://www.squeaksource.com/SystemProfilerPharo.html

Cheers
Philippe






More information about the Pharo-dev mailing list