1 // Bench.h 2 3 #ifndef __7ZIP_BENCH_H 4 #define __7ZIP_BENCH_H 5 6 #include "../../Common/CreateCoder.h" 7 #include "../../UI/Common/Property.h" 8 9 struct CBenchInfo 10 { 11 UInt64 GlobalTime; 12 UInt64 GlobalFreq; 13 UInt64 UserTime; 14 UInt64 UserFreq; 15 UInt64 UnpackSize; 16 UInt64 PackSize; 17 UInt64 NumIterations; 18 CBenchInfoCBenchInfo19 CBenchInfo(): NumIterations(0) {} 20 UInt64 GetUsage() const; 21 UInt64 GetRatingPerUsage(UInt64 rating) const; 22 UInt64 GetSpeed(UInt64 numCommands) const; 23 }; 24 25 struct IBenchCallback 26 { 27 virtual HRESULT SetFreq(bool showFreq, UInt64 cpuFreq) = 0; 28 virtual HRESULT SetEncodeResult(const CBenchInfo &info, bool final) = 0; 29 virtual HRESULT SetDecodeResult(const CBenchInfo &info, bool final) = 0; 30 }; 31 32 UInt64 GetCompressRating(UInt32 dictSize, UInt64 elapsedTime, UInt64 freq, UInt64 size); 33 UInt64 GetDecompressRating(UInt64 elapsedTime, UInt64 freq, UInt64 outSize, UInt64 inSize, UInt64 numIterations); 34 35 const int kBenchMinDicLogSize = 18; 36 37 UInt64 GetBenchMemoryUsage(UInt32 numThreads, UInt32 dictionary); 38 39 struct IBenchPrintCallback 40 { 41 virtual void Print(const char *s) = 0; 42 virtual void NewLine() = 0; 43 virtual HRESULT CheckBreak() = 0; 44 }; 45 46 HRESULT Bench( 47 DECL_EXTERNAL_CODECS_LOC_VARS 48 IBenchPrintCallback *printCallback, 49 IBenchCallback *benchCallback, 50 const CObjectVector<CProperty> &props, 51 UInt32 numIterations, 52 bool multiDict 53 ); 54 55 #endif 56