File closing annoyances
David T. Lewis
lewis at mail.msen.com
Wed Jan 1 23:21:44 UTC 2003
On Wed, Jan 01, 2003 at 01:36:49PM -0800, Tim Rowledge wrote:
>
> However, one place that really caught my eye whilst digging around was
> the rather odd seeming close-and-reopen process whenever changes are
> flushed to the changelog. This is despite the use of an explicit flush
> method... (see SystemDictionary>forceChangesToDisk or similar)
>
> Does anyone know if this oddity is still required, or why it is used?
> Can it be dropped?
I suspect that there are any number of platforms on which it would be
a bad idea to have the changes file open at the same time the VM
decides to crash. I feel a bit safer overall having the changes file
in a normally-closed condition.
However, now that you mention it... If you put a TimeProfile browser
on something like this:
| fs |
TimeProfileBrowser onBlock:
[100 timesRepeat:
[fs _ FileStream fileNamed: '/my/squeak/directory/squeak.changes'.
fs close]]
You'll find that the real concern is in WeakRegistry>>remove:ifAbsent:
This actually turns out to be a very large performance impact on anything
that closes lots of files. CommandShell takes a bit hit on this for
instance.
I took a look at this a while ago, but was uncertain as to how to
improve it.
Dave
More information about the Squeak-dev
mailing list
|