Re: Updated Delta+BOHE Impl in Java

James M Snell <jasnell@gmail.com> Thu, 11 April 2013 18:08 UTC

Return-Path: <ietf-http-wg-request@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D70CD21F8D0F for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 11 Apr 2013 11:08:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.999
X-Spam-Level:
X-Spam-Status: No, score=-9.999 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, J_CHICKENPOX_54=0.6, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YniZCzilZmVm for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 11 Apr 2013 11:08:37 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id BA44621F8D05 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Thu, 11 Apr 2013 11:08:36 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1UQLtG-0002Gb-TN for ietf-http-wg-dist@listhub.w3.org; Thu, 11 Apr 2013 18:06:30 +0000
Resent-Date: Thu, 11 Apr 2013 18:06:30 +0000
Resent-Message-Id: <E1UQLtG-0002Gb-TN@frink.w3.org>
Received: from maggie.w3.org ([128.30.52.39]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <jasnell@gmail.com>) id 1UQLtD-0002FT-V6 for ietf-http-wg@listhub.w3.org; Thu, 11 Apr 2013 18:06:27 +0000
Received: from mail-oa0-f46.google.com ([209.85.219.46]) by maggie.w3.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from <jasnell@gmail.com>) id 1UQLtC-0007Mo-P6 for ietf-http-wg@w3.org; Thu, 11 Apr 2013 18:06:27 +0000
Received: by mail-oa0-f46.google.com with SMTP id h2so443017oag.19 for <ietf-http-wg@w3.org>; Thu, 11 Apr 2013 11:06:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:mime-version:in-reply-to:references:from:date:message-id :subject:to:content-type; bh=sM6VImrsvtb6ye9TEf6Gb/tKqtI7LWsZBdzKWMLeu70=; b=ubFV9iM+nK6NVsy52QtMH3l5bNnRGRKEkWiMbSofdWp9q2u1gTXbsTxhg/zUFr4ZH1 GUR3s7U/VpH2XguEUMDN2ecXWy+WbLwDQwb5/s9rQgNyfT4QD/cncSIQrsbSSvxHkpLZ 7zcBVpG9Sny4KzE9Pk2xx4eQ9c5JUOagEeV6NdOcXiv/SuNPl48SZtWMbc/4CK/hr5F5 bmqKkFvW/kE2LzYTlx8w8i+Y09o01VchhWpomN6NG/uQsiUSmt5pGWbOaSV7bI0zS5lZ CtySf+XVi/hHf+78mVWSrKUtc5EYjv2r0Z0d4aY3JoorrBG3f+xdGWHTSoudc9Rq6xez FblA==
X-Received: by 10.60.60.227 with SMTP id k3mr2636408oer.97.1365703560680; Thu, 11 Apr 2013 11:06:00 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.60.132.102 with HTTP; Thu, 11 Apr 2013 11:05:40 -0700 (PDT)
In-Reply-To: <CABP7RbfE3+Zp0_=XkxuDQyLkoQMJP=qKisak-pXiLVcKi_f-+g@mail.gmail.com>
References: <CABP7RbfE3+Zp0_=XkxuDQyLkoQMJP=qKisak-pXiLVcKi_f-+g@mail.gmail.com>
From: James M Snell <jasnell@gmail.com>
Date: Thu, 11 Apr 2013 11:05:40 -0700
Message-ID: <CABP7Rbe4Cm50+1GVqTNk=dF2Tf=y+587tLn3OFYkbFaHJwvFmQ@mail.gmail.com>
To: "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>
Content-Type: text/plain; charset="UTF-8"
Received-SPF: pass client-ip=209.85.219.46; envelope-from=jasnell@gmail.com; helo=mail-oa0-f46.google.com
X-W3C-Hub-Spam-Status: No, score=-3.5
X-W3C-Hub-Spam-Report: AWL=-2.695, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001
X-W3C-Scan-Sig: maggie.w3.org 1UQLtC-0007Mo-P6 d7297c86bf9c676e4562a4860b97f5f8
X-Original-To: ietf-http-wg@w3.org
Subject: Re: Updated Delta+BOHE Impl in Java
Archived-At: <http://www.w3.org/mid/CABP7Rbe4Cm50+1GVqTNk=dF2Tf=y+587tLn3OFYkbFaHJwvFmQ@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/17214
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

FYI... compression-test suite integration is done... still have lots
of testing and fine tuning of the overall implementation to do, but
it's now possible to run this through the compression-test toolset.

Just pull the code from github and run the maven build, then from the
compression-test directory, do...

./compare_compressors.py -c
fork="{path_to_code}/http2/compression_test.sh" -c delta2 \
   ../http_samples/mnot/craigslist.org.har

where {path_to_code} is the full path to the java code...

* TOTAL: 33 req messages

   size  time | ratio min   max   std
                                                           http1
 13,389  0.00 | 1.00  1.00  1.00  0.00
  fork (/Users/james/Workspaces/specs/http2/compression_test.sh)
  2,489  0.01 | 0.19  0.07  0.75  0.11
                                                          delta2
  1,812  0.04 | 0.14  0.05  0.61  0.10

* TOTAL: 33 res messages

   size  time | ratio min   max   std
                                                           http1
 10,363  0.00 | 1.00  1.00  1.00  0.00
  fork (/Users/james/Workspaces/specs/http2/compression_test.sh)
  1,656  0.00 | 0.16  0.07  0.54  0.11
                                                          delta2
  2,452  0.02 | 0.24  0.06  0.55  0.10

On Tue, Apr 9, 2013 at 10:24 AM, James M Snell <jasnell@gmail.com> wrote:
> I have updated my experimental Delta+Bohe java implementation to match
> the current draft of the specification and Roberto's current delta
> iteration. I still have to patch this in to the compression-test stuff
> but the code is functional.
>
>   https://github.com/jasnell/http2
>
> Requires maven to build. Dependencies are light. Still needs a ton of
> work and I have not even started working on performance optimizations.
> It's a pretty straight forward port of everything Roberto has done in
> the python impl.
>
> The one bit this does add is multi-type header values. The types
> supported are String, Number, Datetime and Binary. Strings can be
> either UTF-8 or ISO-8859-1. If they are ISO-8859-1, they can be
> Huffman coded using Roberto's static code. I am using an different
> static dictionary of predefined header values tho.
>
> General takeaways ..
>
> 1. The implementation is not that difficult to do and seems to perform
> reasonably well.
> 2. The additional types are very useful and add minimal additional
> complexity to the implementation.
> 3. I'm generally not convinced that we really need the huffman coding.
> Yes, it saves a handful of bytes here and there but it does add
> additional complexity. I can live with it tho. If we keep it and we
> decide to allow for UTF8 header values, then we need to come up with a
> static huffman coding that includes the extended UTF8 character
> support.
> 4. Performance seems reasonable overall.
>
> I'm going to be working on implementing HeaderDiff next. Hopefully
> I'll have the time to have that done by this Friday.
>
> - James