Reducing CPU usage

Simon Lyall simon at darkmere.gen.nz
Tue Dec 18 23:10:37 CET 2012


On Tue, 18 Dec 2012, James Pearson wrote:
> Towards the end, you mention moving a rule from being of the form
>
>    if ((a || b ) && c) {
>
> to
>
> 	if (a || b) {
> 		if (c) {
>
> , where c is an expensive check and (a || b) rules out most pages, and seeing a
> CPU usage decrease.  This seems odd to me, since I'd expect short-circuiting to
> cut out the check for c if (a || b) is false.

In reality what I did was closer to changing:

if ((a || b ) && c) { }
if ((a || b ) && d) { }
if ((a || b ) && e) { }

to:

if (a || b) {
   if (c) { }
   if (d) { }
   if (e) { }
}

where c,d & e were large regex functions. The test ( a || b ) was matched 
about 14% of the time.

I don't think I would see as large a drop in CPU usage if "c" wasn't being 
checked in the original code when even when (a || b) failed.


-- 
Simon Lyall  |  Very Busy  |  Web: http://www.darkmere.gen.nz/
"To stay awake all night adds a day to your life" - Stilgar | eMT.




More information about the varnish-misc mailing list