[Mimedefang] Patch: adding custom headers for SpamAssassin
David F. Skoll
dfs at roaringpenguin.com
Fri Sep 22 16:16:13 EDT 2006
Jan-Pieter Cornet wrote:
> As for an object-oriented MIMEDefang... I'm not convinced that is
> a good idea. OO does add overhead to perl -- certainly, calling
> an object method, compared to accessing a global variable, is a very
> costly operation... but of course you need to see that in the
> big picture, it depends how often you'd call a method.
That's true. However, our commercial CanIt product lines are all
heavily OO, and the OO execution overhead seems to be dwarfed by
SpamAssassin's execution time. Where OO can hurt (and does hurt us a
bit) is memory use. When you start going CPAN-happy and using all
kinds of modules in your code, you can really bloat the program. And
because of Perl's reference-counted GC scheme, very little data memory
is shareable after a fork -- just accessing data touches the reference
counts, dirties the memory pages, and requires a copy. That means all
your SpamAssassin rules get copied...
We've been going through our code eliminating the worst memory-offenders.
Some are surprising: A simple "use File::Find;" adds 1.5MB to perl's
> Then again, when compared to running SpamAssassin, the difference
> is probably not measurable, so maybe I'm overreacting.
The SpamAssassin code scares me...
> Hmm... I just realised that the last time I brought this up,
> somebody suggested putting it on a public cvs or svn, I considered
> that I good idea.. and... never came around to doing that.
> If there's still interest, I can still do so.
Sure. If/when we get around to designing MIMEDefang v3, we might make it
more of a "bazaar" than "cathedral" project, but we'll see...
More information about the MIMEDefang