Victor Duchovni:
> On Mon, Sep 22, 2008 at 09:08:55AM -0300, jakjr wrote:
> 
> > Hi Guys,
> > 
> > I have one big distribution list (100K emails). I'm using virtual_alias_maps
> > for that like this:
> > 
> > virtual_alias_maps = hash:/etc/postfix/virtual
> > 
> > where virtual:
> > [EMAIL PROTECTED]
> >   [EMAIL PROTECTED],
> >   .
> >   [EMAIL PROTECTED]
> 
> By default Postfix truncates virtual(5) expansion at 1000 recipients.
> For lists this large you MUST not use virtual(5), rather use a ":include:"
> valued local alias, AND set an "owner-list" alias to make sure that
> bounces are NOT send to the sender.

I just did a quick run-time profile of the cleanup daemon's CPU
usage, and it was no surprise that most time was spent manipulating
email addresses. I expected less that the time was spent in a
quadratic algorithm.

Specifically, most time was being spent in tok822_append(), as it
is called by tok822_group(). Function tok822_append() is called
from several places, and I had to "inline" it to find out which
calls are expensive. The expense is incurred when tok822_append()
appends a list of multiple tokens, which makes the algorithm
quadratic. This could be avoided by passing in a pointer to the
last list element, and keeping that pointer up to date as the
program evolves.

The "owner" member of an address token is never tested for its
actual value, only for zero or non-zero. Therefore in many cases
the quadratic behavior can be avoided altogether. However, this is
not something I would change while recovering from a seven-hour
time shift.

        Wietse

Reply via email to