folly::io::QueueAppender speedup
Summary:
Make QueueAppender (as used in the thrift2 protocol writer) much faster.
Benchmarks in a separate diff (for thrift2).
A few things:
- remove IOBuf range checks in optimized mode
- simplify QueueAppender: maxGrowth wasn't used, removed it
- simplify QueueAppender: don't duplicate the work in IOBufQueue, let
IOBufQueue keep track of memory
- speed up IOBuf::isSharedOne(): fast-path case where the buffer was never
shared (so don't read the reference count in that case)
- fast-path in QueueAppender if size is known at compile time
@override-unit-failures
compilation errors outside of folly fixed in subsequent diff
Test Plan: folly/io/test, both dbg and opt
Reviewed By: davejwatson@fb.com
FB internal diff:
D946907