HPACK benchmark test for substitution indexing vs incremental indexing only

I made a simple benchmark test for substitution indexing vs
incremental indexing only and share its results here.

The detailed results can be found at
https://github.com/tatsuhiro-t/nghttp2/wiki/hpackSubst

"""
HPACK draft offers 2 kind of indexing methods: incremental and
substitution. In nghttp2, we always use incremental
indexing. This is because we do not have good strategy to use
substitution indexing efficiently. We suspect that it is in the
draft because it has some use cases, but we don't see them yet.

So we did some tests comparing our incremental only strategy and
the experimental strategy utilizing substitution indexing.

Our incremental only strategy goes as follows:

1. If the name/value pair is in the header table, use indexed
   representation.

2. Else, if name is in the header table, use incremental indexing
   with indexed name.

3. Else, use incremental indexing with new name.

The experimental strategy utilizing substitution indexing changes
step 2 as follows:

2. Else, if name is in the header table, substitute that entry;
   use substitution indexing with indexed name.

We use data set in https://github.com/http2/http_samples.

The detailed results are listed in the following sections.

The end result is that, in the overall, incremental only strategy
is more efficient than the strategy with substitution. But the
difference is not so large. On some data set, the substitution
performed well, so depending on the data set, the winner may
change. Also there may be better strategy for substitution.
"""

It turns out that the experimental strategy is used in node-http2
and firefox.

Received on Saturday, 21 September 2013 12:13:15 UTC