FreeBSD Ports statistics
lele at nautilus.homeip.net
Sun Sep 3 20:17:23 BST 2006
John Arbash Meinel wrote:
> Lele Gaifax wrote:
>> reader = codecs.getreader(encoding)
>> log = reader(output of rlor)
>> return iterator_over_changeset_from_rlog(log)
>> so maybe the reader is retaining its input and should be explicitly
>> closed, or something like that...
> Well when using an iterator like that, it could easily be holding open a
> file object. I don't really know myself. I assume you are doing this
> because you think it is better for not having to read in the entire file?
The output is a StringIO object, fetched from the "cvs rlog" subprocess
stdout&stderr, and the parser consumes it a line at a time...
> Is 'output' a string object, or a file? Because multiple calls to
> string.encode() is usually very inefficient. It is usually better to do:
> txt = file.read().decode(encoding)
> rather than:
> for line in file:
> txt = line.decode(encoding)
> I saw some large advantages in bzr in doing the first form (versus
> calling decode() about 100K times).
Yes, I read. I'll try to dig further.
> Yep, it worked, and I can see that it does update multiple files at once
> now. So now 'cvs update' isn't as big of a deal, just 'bzr commit' time,
> and some other time that I don't know what Tailor is doing. Right after
> it prints the log message, it spends a couple seconds just sitting there
> before it starts spawning 'cvs update'.
Uhm, I assume you don't have a "delay_before_apply" option... so this is
strange. Thanks for reporting, I'll try to explain that too.
More information about the bazaar