From: Amos Jeffries Date: Sun, 28 Feb 2016 07:49:02 +0000 (+1300) Subject: Cleanup: separate SBufStats from SBuf.h X-Git-Tag: SQUID_4_0_8~57 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b268925c4a732a8668f574fdeeccdf94b8ffb1fa;p=thirdparty%2Fsquid.git Cleanup: separate SBufStats from SBuf.h --- diff --git a/src/sbuf/Makefile.am b/src/sbuf/Makefile.am index 062bda4831..e42c1e29b7 100644 --- a/src/sbuf/Makefile.am +++ b/src/sbuf/Makefile.am @@ -24,4 +24,6 @@ libsbuf_la_SOURCES = \ SBufExceptions.h \ SBufList.cc \ SBufList.h \ - SBufStream.h + SBufStream.h \ + Stats.cc \ + Stats.h diff --git a/src/sbuf/SBuf.cc b/src/sbuf/SBuf.cc index 1e75cc8831..1d2ea44c9a 100644 --- a/src/sbuf/SBuf.cc +++ b/src/sbuf/SBuf.cc @@ -36,44 +36,6 @@ SBufStats SBuf::stats; const SBuf::size_type SBuf::npos; const SBuf::size_type SBuf::maxSize; -SBufStats::SBufStats() - : alloc(0), allocCopy(0), allocFromCString(0), - assignFast(0), clear(0), append(0), moves(0), toStream(0), setChar(0), - getChar(0), compareSlow(0), compareFast(0), copyOut(0), - rawAccess(0), nulTerminate(0), chop(0), trim(0), find(0), scanf(0), - caseChange(0), cowFast(0), cowSlow(0), live(0) -{} - -SBufStats& -SBufStats::operator +=(const SBufStats& ss) -{ - alloc += ss.alloc; - allocCopy += ss.allocCopy; - allocFromCString += ss.allocFromCString; - assignFast += ss.assignFast; - clear += ss.clear; - append += ss.append; - moves += ss.moves; - toStream += ss.toStream; - setChar += ss.setChar; - getChar += ss.getChar; - compareSlow += ss.compareSlow; - compareFast += ss.compareFast; - copyOut += ss.copyOut; - rawAccess += ss.rawAccess; - nulTerminate += ss.nulTerminate; - chop += ss.chop; - trim += ss.trim; - find += ss.find; - scanf += ss.scanf; - caseChange += ss.caseChange; - cowFast += ss.cowFast; - cowSlow += ss.cowSlow; - live += ss.live; - - return *this; -} - SBuf::SBuf() : store_(GetStorePrototype()), off_(0), len_(0) { @@ -863,40 +825,6 @@ SBuf::scanf(const char *format, ...) return rv; } -std::ostream & -SBufStats::dump(std::ostream& os) const -{ - MemBlobStats ststats = MemBlob::GetStats(); - os << - "SBuf stats:\nnumber of allocations: " << alloc << - "\ncopy-allocations: " << allocCopy << - "\ncopy-allocations from C String: " << allocFromCString << - "\nlive references: " << live << - "\nno-copy assignments: " << assignFast << - "\nclearing operations: " << clear << - "\nappend operations: " << append << - "\nmove operations: " << moves << - "\ndump-to-ostream: " << toStream << - "\nset-char: " << setChar << - "\nget-char: " << getChar << - "\ncomparisons with data-scan: " << compareSlow << - "\ncomparisons not requiring data-scan: " << compareFast << - "\ncopy-out ops: " << copyOut << - "\nraw access to memory: " << rawAccess << - "\nNULL terminate C string: " << nulTerminate << - "\nchop operations: " << chop << - "\ntrim operations: " << trim << - "\nfind: " << find << - "\nscanf: " << scanf << - "\ncase-change ops: " << caseChange << - "\nCOW not actually requiring a copy: " << cowFast << - "\nCOW: " << cowSlow << - "\naverage store share factor: " << - (ststats.live != 0 ? static_cast(live)/ststats.live : 0) << - std::endl; - return os; -} - void SBuf::toLower() { diff --git a/src/sbuf/SBuf.h b/src/sbuf/SBuf.h index f275fc7894..0780eb528a 100644 --- a/src/sbuf/SBuf.h +++ b/src/sbuf/SBuf.h @@ -16,6 +16,7 @@ #include "globals.h" #include "sbuf/MemBlob.h" #include "SBufExceptions.h" +#include "sbuf/Stats.h" #include #include @@ -37,47 +38,6 @@ typedef enum { caseInsensitive } SBufCaseSensitive; -/** - * Container for various SBuf class-wide statistics. - * - * The stats are not completely accurate; they're mostly meant to - * understand whether Squid is leaking resources - * and whether SBuf is paying off the expected gains. - */ -class SBufStats -{ -public: - uint64_t alloc; /// + +SBufStats::SBufStats() + : alloc(0), allocCopy(0), allocFromCString(0), + assignFast(0), clear(0), append(0), moves(0), toStream(0), setChar(0), + getChar(0), compareSlow(0), compareFast(0), copyOut(0), + rawAccess(0), nulTerminate(0), chop(0), trim(0), find(0), scanf(0), + caseChange(0), cowFast(0), cowSlow(0), live(0) +{} + +SBufStats& +SBufStats::operator +=(const SBufStats& ss) +{ + alloc += ss.alloc; + allocCopy += ss.allocCopy; + allocFromCString += ss.allocFromCString; + assignFast += ss.assignFast; + clear += ss.clear; + append += ss.append; + moves += ss.moves; + toStream += ss.toStream; + setChar += ss.setChar; + getChar += ss.getChar; + compareSlow += ss.compareSlow; + compareFast += ss.compareFast; + copyOut += ss.copyOut; + rawAccess += ss.rawAccess; + nulTerminate += ss.nulTerminate; + chop += ss.chop; + trim += ss.trim; + find += ss.find; + scanf += ss.scanf; + caseChange += ss.caseChange; + cowFast += ss.cowFast; + cowSlow += ss.cowSlow; + live += ss.live; + + return *this; +} + +std::ostream & +SBufStats::dump(std::ostream& os) const +{ + MemBlobStats ststats = MemBlob::GetStats(); + os << + "SBuf stats:\nnumber of allocations: " << alloc << + "\ncopy-allocations: " << allocCopy << + "\ncopy-allocations from C String: " << allocFromCString << + "\nlive references: " << live << + "\nno-copy assignments: " << assignFast << + "\nclearing operations: " << clear << + "\nappend operations: " << append << + "\nmove operations: " << moves << + "\ndump-to-ostream: " << toStream << + "\nset-char: " << setChar << + "\nget-char: " << getChar << + "\ncomparisons with data-scan: " << compareSlow << + "\ncomparisons not requiring data-scan: " << compareFast << + "\ncopy-out ops: " << copyOut << + "\nraw access to memory: " << rawAccess << + "\nNULL terminate C string: " << nulTerminate << + "\nchop operations: " << chop << + "\ntrim operations: " << trim << + "\nfind: " << find << + "\nscanf: " << scanf << + "\ncase-change ops: " << caseChange << + "\nCOW not actually requiring a copy: " << cowFast << + "\nCOW: " << cowSlow << + "\naverage store share factor: " << + (ststats.live != 0 ? static_cast(live)/ststats.live : 0) << + std::endl; + return os; +} + diff --git a/src/sbuf/Stats.h b/src/sbuf/Stats.h new file mode 100644 index 0000000000..34c37a04b0 --- /dev/null +++ b/src/sbuf/Stats.h @@ -0,0 +1,55 @@ +/* + * Copyright (C) 1996-2016 The Squid Software Foundation and contributors + * + * Squid software is distributed under GPLv2+ license and includes + * contributions from numerous individuals and organizations. + * Please see the COPYING and CONTRIBUTORS files for details. + */ + +#ifndef SQUID_SBUF_STATS_H +#define SQUID_SBUF_STATS_H + +#include + +/** + * Container for various SBuf class-wide statistics. + * + * The stats are not completely accurate; they're mostly meant to + * understand whether Squid is leaking resources + * and whether SBuf is paying off the expected gains. + */ +class SBufStats +{ +public: + uint64_t alloc; ///