Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(950)

Unified Diff: net/spdy/hpack_encoder.cc

Issue 243153003: HPACK optimal Huffman code instrumentation and UMA collection. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Disable experiment by default; raise publish threshold to 50K characters. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/spdy/hpack_encoder.cc
diff --git a/net/spdy/hpack_encoder.cc b/net/spdy/hpack_encoder.cc
index 81d33ad171d38aaaaee3058cb3df5593b20f230c..502b60484c35f571afcd5b667f4a8d6c44b97488 100644
--- a/net/spdy/hpack_encoder.cc
+++ b/net/spdy/hpack_encoder.cc
@@ -31,7 +31,9 @@ const uint8 kReferencedThisEncoding = 3;
HpackEncoder::HpackEncoder(const HpackHuffmanTable& table)
: output_stream_(),
allow_huffman_compression_(true),
- huffman_table_(table) {}
+ huffman_table_(table),
+ char_counts_(NULL),
+ total_char_counts_(NULL) {}
HpackEncoder::~HpackEncoder() {}
@@ -178,6 +180,7 @@ void HpackEncoder::EmitString(StringPiece str) {
output_stream_.AppendUint32(str.size());
output_stream_.AppendBytes(str);
}
+ UpdateCharacterCounts(str);
}
// static
@@ -237,6 +240,23 @@ HpackEncoder::Representations HpackEncoder::DetermineEncodingDelta(
return explicit_set;
}
+void HpackEncoder::SetCharCountsStorage(std::vector<size_t>* char_counts,
+ size_t* total_char_counts) {
+ CHECK_LE(256u, char_counts->size());
+ char_counts_ = char_counts;
+ total_char_counts_ = total_char_counts;
+}
+
+void HpackEncoder::UpdateCharacterCounts(base::StringPiece str) {
+ if (char_counts_ == NULL || total_char_counts_ == NULL) {
+ return;
+ }
+ for (StringPiece::const_iterator it = str.begin(); it != str.end(); ++it) {
+ ++(*char_counts_)[static_cast<uint8>(*it)];
+ }
+ (*total_char_counts_) += str.size();
+}
+
// static
void HpackEncoder::CookieToCrumbs(const Representation& cookie,
Representations* out) {

Powered by Google App Engine
This is Rietveld 408576698