ALib C++ Framework
by
Library Version: 2605 R0
Documentation generated by doxygen
Loading...
Searching...
No Matches
ac.cpp
1#if ALIB_BOXING
3#endif
4
5namespace alib { namespace bitbuffer { namespace ac_v1 {
6
7#if ALIB_FORMAT
8
9void ArrayCompressor::Statistics::Print(AString& result, const String& headline, bool printTotals) {
12 fmt.Reset();
13
14 Ticks::Duration tWrite;
15 Ticks::Duration tRead;
16
17 size_t allSizes = 0;
18 size_t winnerSizes= 0;
19 ALIB_DBG(int check= 0;)
20
21 result << "-------------------------------------------------------------------\n";
22 fmt.Format( result, "{} ({} arrays compressed)\n", headline, ctdCompressions );
23 fmt.Format( result, A_WCHAR("#Algo \u2205writeTime \u2205readTime \u2205 Size \u2205 Sz-Won wins\n" ));
24 result << "-------------------------------------------------------------------\n";
25 for( int algoNo= 0; algoNo < ArrayCompressor::NumberOfAlgorithms ; ++algoNo ) {
26 String128 sizeWhenWon;
27 if( sumUnCompressedWon[algoNo] )
28 fmt.Format( sizeWhenWon, "{:f5.1}%",
29 double(100 * sumCompressedWon[algoNo]) / double(sumUnCompressedWon[algoNo]) );
30 else
31 sizeWhenWon= "-/-";
32
33 String128 avgReadTime;
34 if( readTimes [algoNo].InNanoseconds() )
35 fmt.Format( avgReadTime, "{:>11,}",
36 readTimes [algoNo].InNanoseconds() / (ctdReads[algoNo] ? ctdReads[algoNo] : 1 ) );
37 else
38 avgReadTime= "-/-";
39
40 fmt.Format( result,
41 "{:13} {:>8,} {:>11} {:f5.1}% {:>6} {:f3.0}% ({:4})\n"
42 , ToBitwiseEnumeration<Algorithm>( algoNo )
43 , writeTimes[algoNo].InNanoseconds() / ctdCompressions
44 , avgReadTime
45 , double(100 * sumCompressed[algoNo]) / double(sumUncompressed)
46 , sizeWhenWon
47 , double(100 * ctdWins [algoNo]) / ctdCompressions
48 , ctdWins [algoNo] );
49
50 ALIB_DBG(check+= ctdWins[algoNo];)
51
52 tWrite += writeTimes [algoNo];
53 tRead += readTimes [algoNo];
54 allSizes += sumCompressed [algoNo];
55 winnerSizes+= sumCompressedWon[algoNo];
56 }
57
58 ALIB_ASSERT_ERROR( check==ctdCompressions, "BITBUFFER/AC",
59 "Error in ArrayCompressor::ExecutionStats: #algo wins do not sum up to #compressions: {} != ",
60 check, ctdCompressions )
61 if( printTotals) {
62 result << " -----------------------------------------------------------\n";
63
64 fmt.Format( result, " Totals:{:>7,} {:>11,} {:f5.1}% {:f5.1}%\n"
65 , tWrite.InNanoseconds() / ( ctdCompressions * ArrayCompressor::NumberOfAlgorithms )
66 , tRead .InNanoseconds() / ctdCompressions
67 , double(100 * allSizes ) / double( ArrayCompressor::NumberOfAlgorithms * sumUncompressed )
68 , double(100 * winnerSizes) / double(sumUncompressed) );
69 }
70 result.NewLine();
71}
72
73#endif // #if ALIB_CAMP
74
75}}} // namespace [alib::bitbuffer::ac_v1]
#define ALIB_LOCK_RECURSIVE_WITH(lock)
#define ALIB_DBG(...)
#define ALIB_ASSERT_ERROR(cond, domain,...)
#define A_WCHAR(STR)
#define ALIB_BOXING_VTABLE_DEFINE(TMapped, Identifier)
static constexpr int NumberOfAlgorithms
The number of algorithms implemented.
Definition ac.hpp:39
static threads::RecursiveLock DEFAULT_LOCK
Formatter & Format(AString &target, TArgs &&... args)
static SPFormatter DEFAULT
virtual BoxesMA & Reset()
Definition alox.cpp:14
format::Formatter Formatter
Type alias in namespace #"%alib".
strings::TString< character > String
Type alias in namespace #"%alib".
Definition string.hpp:2165
LocalString< 128 > String128
Type alias name for #"TLocalString;TLocalString<character,128>".
strings::TAString< character, lang::HeapAllocator > AString
Type alias in namespace #"%alib".
int ctdCompressions
The number of executed compressions.
Definition ac.hpp:292
size_t sumUnCompressedWon[NumberOfAlgorithms]
Definition ac.hpp:286
size_t sumCompressed[NumberOfAlgorithms]
For each algorithm, the sum of resulting bytes of all compressions performed.
Definition ac.hpp:276
Ticks::Duration readTimes[NumberOfAlgorithms]
The overall decompression time of each algorithm.
Definition ac.hpp:266
size_t sumCompressedWon[NumberOfAlgorithms]
Definition ac.hpp:281
int ctdReads[NumberOfAlgorithms]
The number of measured decompression runs of each algorithm.
Definition ac.hpp:269
size_t sumUncompressed
The overall given array data to compress.
Definition ac.hpp:289
Ticks::Duration writeTimes[NumberOfAlgorithms]
The overall compression time of each algorithm.
Definition ac.hpp:263