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 9struct CBenchInfo 10{ 11 UInt64 GlobalTime; 12 UInt64 GlobalFreq; 13 UInt64 UserTime; 14 UInt64 UserFreq; 15 UInt64 UnpackSize; 16 UInt64 PackSize; 17 UInt64 NumIterations; 18 19 CBenchInfo(): NumIterations(0) {} 20 UInt64 GetUsage() const; 21 UInt64 GetRatingPerUsage(UInt64 rating) const; 22 UInt64 GetSpeed(UInt64 numCommands) const; 23}; 24 25struct 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 32UInt64 GetCompressRating(UInt32 dictSize, UInt64 elapsedTime, UInt64 freq, UInt64 size); 33UInt64 GetDecompressRating(UInt64 elapsedTime, UInt64 freq, UInt64 outSize, UInt64 inSize, UInt64 numIterations); 34 35const int kBenchMinDicLogSize = 18; 36 37UInt64 GetBenchMemoryUsage(UInt32 numThreads, UInt32 dictionary); 38 39struct IBenchPrintCallback 40{ 41 virtual void Print(const char *s) = 0; 42 virtual void NewLine() = 0; 43 virtual HRESULT CheckBreak() = 0; 44}; 45 46HRESULT 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