MIME::Parser memory usage

dave0 on 2006-11-29T15:17:21

rjbs has been trying to improve Email::Simple's memory consumption, so I figured I'd give his test a try on MIME::Parser, just for the heck of it. It's not a very good test for MIME::Parser, because Email::Simple doesn't itself do most of the stuff MIME::Parser does, but it's something.

Given the numbers he posted, for Email::Simple, I expected MIME::Parser to be much worse, but instead, for an 8MB message with 50 headers I get:

$ perl ./readmail-mimetools big.msg just started                :  1556  3384 after require File::Slurp   :  2564  4180 after slurping              : 18204 19812 after require MIME::Parser  : 21928 23460 after construction          : 37684 39236
So... the code over head for MIME::Parser is about 3.7MB, and we take just under 2x the message size for internal representation.

Trying again, with MIME::Parser's tmp_to_core and output_to_core turned off (this makes it litter your filesystem with temp files named "msg-PID-N.txt" for each MIME body) it's a bit better:
$ perl ./readmail-mimetools-noncore big.msg just started                :  1560  3384 after require File::Slurp   :  2564  4180 after slurping              : 18204 19812 after require MIME::Parser  : 21928 23460 after construction          : 29832 31412
So, what does this prove? Well, MIME-tools doesn't suck as bad as I thought. That's about it.