Yes, the optimization of mimimizing elapsed time is only good if you have a single process scanning emails, and you have nothing better to do on the cpu. As soon as you have more than one process scanning emails, those 'wait' cycles are quickly used by another process scanning email. Although total elapsed time might go up a bit by a second or so, you can process more email in the same amount of time.
dale luck -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Tuesday, May 31, 2005 2:42 PM To: Dale Luck Cc: Justin Mason; Sidney Markowitz; Malte S. Stretz; [email protected] Subject: Re: Renaming DnsResolver::search to send -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Dale Luck writes: > This is a multi-part message in MIME format. > > ------_=_NextPart_001_01C5660E.C78170A6 > Content-Type: text/plain; > charset="iso-8859-1" > Content-Transfer-Encoding: quoted-printable > > >SPF has a mode whereby a lookup could return data that requires *another* > >DNS lookup, e.g. the "include:foo.com" directive. > > >Currently we have to use Mail::SPF::Query as a single method call, and > >allow it to run all necessary queries by itself and simply wait for it to > >return. A more efficient way would be to have a polling mode, so we can > >process our own code while waiting for results, and poll for results > >intermittently -- similar to how we do DNSBL and URIBL lookups. > > This is exactly the stuff I rewrote inside the check function. Its > the exact opposite of whats needed to be done if you can use any of > these results to 'block' without needing any other scores. > > I run all the rbl lookups and then wait for the results to come back. > If we get a block/hit we return without running anymore rules. This > gave us a large performance boost in a server environment since we > can eliminate rules that are essentially ignored early on. There are > better things to do with the cpu. well that's interesting! So you're saying you let the checks run with a longer total run time, in exchange for being able to early-exit based on DNSBL lookup results to save CPU time? I think we've always been heading in the opposite direction -- minimum total runtime. It's a good argument to make access to parts of the check() function more fine-grained for users of the Mail::SpamAssassin::PerMsgStatus class. - --j. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.5 (GNU/Linux) Comment: Exmh CVS iD8DBQFCnNo8MJF5cimLx9ARAvtbAJ9lke3xMD7nRJ5pdikjex8YpCMmaACfU+mX yh8F1dZnPFGstPEYBP0LmN4= =EHrD -----END PGP SIGNATURE-----
