<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
    <title></title>
  </head>
  <body bgcolor="#ffffff" text="#000000">
    A modern CPU can run, at most, around 10 million -assembly based-
    instructions per second.<br>
    See <a class="moz-txt-link-freetext" href="http://en.wikipedia.org/wiki/Instructions_per_second">http://en.wikipedia.org/wiki/Instructions_per_second</a><br>
    A regular expression compare is likely at least 20 or so assembly
    instructions.<br>
    That gives around 500,000 regular expression compares if you are
    using 100% of the<br>
    CPU just for that. A reasonable amount of CPU to consume would be
    30% ( at most ).<br>
    So; you are left with around 150k regular expression checks per
    second.<br>
    <br>
    Lets suppose there are 500 different domains. On average, you will
    be doing 250 if/else<br>
    checks per call. 150k / 250 = 600. That means that you will get,
    under fair conditions, a max<br>
    of about 600 hits per second. The person asking the question likely
    has 500 domains running.<br>
    That gives a little over 1 hit possible per second per domain. Do
    you think that is an acceptable<br>
    solution for this person? I think not.<br>
    <br>
    Compare it to a hash lookup. A hash lookup, using a good minimal
    perfect hashing algorithms,<br>
    will take at most around 10 operations. Using the same math as
    above, that gives around 300k<br>
    lookups per second. A hash would be roughly 500 times faster than
    using if/else...<br>
    <br>
    On 3/7/2011 1:35 PM, Per Buer wrote:
    <blockquote
      cite="mid:AANLkTinFt7ZSEms1s_7eNN1t_-3-bqDxJfEmGTf0oSS9@mail.gmail.com"
      type="cite">
      <div>Hi,</div>
      <div><br>
      </div>
      On Sun, Mar 6, 2011 at 11:39 PM, AD <span dir="ltr"><<a
          moz-do-not-send="true" href="mailto:straightflush@gmail.com">straightflush@gmail.com</a>></span>
      wrote:<br>
      <div class="gmail_quote">
        <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
          0.8ex; border-left: 1px solid rgb(204, 204, 204);
          padding-left: 1ex;">
          <br>
          <div> 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?</div>
        </blockquote>
        <div><br>
        </div>
        <div>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.</div>
        <div><br>
        </div>
        <div>It might not make sense to optimize this. </div>
        <div><br>
        </div>
      </div>
      -- <br>
      Per Buer, Varnish Software<br>
      Phone: +47 21 98 92 61 / Mobile: +47 958 39 117 / Skype: per.buer<br>
      Varnish makes websites fly!<br>
      Want to learn more about Varnish? <a moz-do-not-send="true"
        href="http://www.varnish-software.com/whitepapers"
        target="_blank">http://www.varnish-software.com/whitepapers</a><br>
      <br>
      <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
varnish-misc mailing list
<a class="moz-txt-link-abbreviated" href="mailto:varnish-misc@varnish-cache.org">varnish-misc@varnish-cache.org</a>
<a class="moz-txt-link-freetext" href="http://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc">http://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc</a></pre>
    </blockquote>
    <br>
  </body>
</html>