Hi David, List. On Mon, Mar 7, 2011 at 7:52 PM, David Helkowski <[email protected]>wrote:
> A modern CPU can run, at most, around 10 million -assembly based- > instructions per second. > See http://en.wikipedia.org/wiki/Instructions_per_second > A regular expression compare is likely at least 20 or so assembly > instructions. > That gives around 500,000 regular expression compares if you are using 100% > of the > CPU just for that. A reasonable amount of CPU to consume would be 30% ( at > most ). > So; you are left with around 150k regular expression checks per second. > I guess we should stop speculating. I wrote a short program to do in-cache pcre pattern matching. My laptop (i5 M560) seems to churn through 7M pcre matches a second so I was a bit off. The matches where anchored and small but varying it doesn't seem to affect performance much. The source for my test is here: http://pastebin.com/a68y15hp (.. ) > Compare it to a hash lookup. A hash lookup, using a good minimal perfect > hashing algorithms, > will take at most around 10 operations. Using the same math as above, that > gives around 300k > lookups per second. A hash would be roughly 500 times faster than using > if/else... > Of course a hash lookup is faster. But if you got to deploy a whole bunch of scary inline C that will seriously intimidate the summer intern and makes all the other fear the config it's just not worth it. Of course it isn't as cool a building a hash table of functions in inline C, but is it useful when the speedup gain is lost in buffer bloat anyway? I think not. Cheers, Per. > > > On 3/7/2011 1:35 PM, Per Buer wrote: > > Hi, > > On Sun, Mar 6, 2011 at 11:39 PM, AD <[email protected]> wrote: > >> >> what is the best way to run an instance of varnish that may need >> different vcl configurations for each hostname. This could end up being >> 100-500 includes to map to each hostname and then a long if/then block based >> on the hostname. Is there a more scalable way to deal with this? >> > > CPU and memory bandwidth is abundant on modern servers. I'm actually not > sure that having a 500 entries long if/else statement will hamper > performance at all. Remember, there will be no system calls. I would guess a > modern server will execute at least a four million regex-based if/else per > second per CPU core if most of the code and data will be in the on die > cache. So executing 500 matches should take about 0.5ms. > > It might not make sense to optimize this. > > -- > Per Buer, Varnish Software > Phone: +47 21 98 92 61 / Mobile: +47 958 39 117 / Skype: per.buer > Varnish makes websites fly! > Want to learn more about Varnish? > http://www.varnish-software.com/whitepapers > > > _______________________________________________ > varnish-misc mailing list > [email protected]http://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc > > > -- Per Buer, Varnish Software Phone: +47 21 98 92 61 / Mobile: +47 958 39 117 / Skype: per.buer Varnish makes websites fly! Want to learn more about Varnish? http://www.varnish-software.com/whitepapers
_______________________________________________ varnish-misc mailing list [email protected] http://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
