Record header compression ratio.
Record compression ratio for all headers sent and received via QUIC, separately
for HPACK and QPACK compressed ones, so that they can be compared. Compressed
size excludes stream frame overhead in all cases.
gfe-relnote: n/a, change to QUIC v99-only code. Protected by existing disabled gfe2_reloadable_flag_quic_enable_version_99.
PiperOrigin-RevId: 272241030
Change-Id: I07a9f9b03ae85f13590c740ece06671c887fadc2
diff --git a/quic/core/http/quic_spdy_stream.cc b/quic/core/http/quic_spdy_stream.cc
index ea8e669..d2e48d1 100644
--- a/quic/core/http/quic_spdy_stream.cc
+++ b/quic/core/http/quic_spdy_stream.cc
@@ -995,6 +995,11 @@
}
void QuicSpdyStream::ProcessDecodedHeaders(const QuicHeaderList& headers) {
+ QuicSpdySession::LogHeaderCompressionRatioHistogram(
+ /* using_qpack = */ true,
+ /* is_sent = */ false, headers.compressed_header_bytes(),
+ headers.uncompressed_header_bytes());
+
if (spdy_session_->promised_stream_id() ==
QuicUtils::GetInvalidStreamId(session()->transport_version())) {
const QuicByteCount frame_length = headers_decompressed_
@@ -1052,6 +1057,12 @@
<< encoded_headers.length();
WriteOrBufferData(encoded_headers, fin, nullptr);
+ QuicSpdySession::LogHeaderCompressionRatioHistogram(
+ /* using_qpack = */ true,
+ /* is_sent = */ true,
+ encoded_headers.size() + encoder_stream_sent_byte_count,
+ header_block.TotalBytesUsed());
+
return encoded_headers.size() + encoder_stream_sent_byte_count;
}