W3C home > Mailing lists > Public > ietf-http-wg@w3.org > April to June 2013

Re: Updated Delta+BOHE Impl in Java

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>
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
Received on Thursday, 11 April 2013 18:06:28 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 1 March 2016 11:11:12 UTC