From 3088f73cf4605f7a3a0d39605d8f1191c1b4795c Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Thu, 6 Jul 2017 10:43:10 +0200 Subject: testlib: move strings from functions to array in benchmark metric Change-Id: Ida7ba60d26171b95ba0e9709eec5c6553efeecca Reviewed-by: Edward Welbourne --- src/testlib/qbenchmarkmetric.cpp | 190 ++++++++++++--------------------------- 1 file changed, 57 insertions(+), 133 deletions(-) diff --git a/src/testlib/qbenchmarkmetric.cpp b/src/testlib/qbenchmarkmetric.cpp index 0ba55dbeb7..0f4f915ed3 100644 --- a/src/testlib/qbenchmarkmetric.cpp +++ b/src/testlib/qbenchmarkmetric.cpp @@ -40,6 +40,53 @@ #include +QT_BEGIN_NAMESPACE + +namespace QTest { + +struct QBenchmarkMetricKey { + int metric; + const char * name; + const char * unit; +}; + +static const QBenchmarkMetricKey entries[] = { + { FramesPerSecond, "FramesPerSecond", "fps" }, + { BitsPerSecond, "BitsPerSecond", "bits/s" }, + { BytesPerSecond, "BytesPerSecond", "bytes/s" }, + { WalltimeMilliseconds, "WalltimeMilliseconds", "msecs" }, + { CPUTicks, "CPUTicks", "CPU ticks" }, + { InstructionReads, "InstructionReads", "instruction reads" }, + { Events, "Events", "events" }, + { WalltimeNanoseconds, "WalltimeNanoseconds", "nsecs" }, + { BytesAllocated, "BytesAllocated", "bytes" }, + { CPUMigrations, "CPUMigrations", "CPU migrations" }, + { CPUCycles, "CPUCycles", "CPU cycles" }, + { BusCycles, "BusCycles", "bus cycles" }, + { StalledCycles, "StalledCycles", "stalled cycles" }, + { Instructions, "Instructions", "instructions" }, + { BranchInstructions, "BranchInstructions", "branch instructions" }, + { BranchMisses, "BranchMisses", "branch misses" }, + { CacheReferences, "CacheReferences", "cache references" }, + { CacheReads, "CacheReads", "cache loads" }, + { CacheWrites, "CacheWrites", "cache stores" }, + { CachePrefetches, "CachePrefetches", "cache prefetches" }, + { CacheMisses, "CacheMisses", "cache misses" }, + { CacheReadMisses, "CacheReadMisses", "cache load misses" }, + { CacheWriteMisses, "CacheWriteMisses", "cache store misses" }, + { CachePrefetchMisses, "CachePrefetchMisses", "cache prefetch misses" }, + { ContextSwitches, "ContextSwitches", "context switches" }, + { PageFaults, "PageFaults", "page faults" }, + { MinorPageFaults, "MinorPageFaults", "minor page faults" }, + { MajorPageFaults, "MajorPageFaults", "major page faults" }, + { AlignmentFaults, "AlignmentFaults", "alignment faults" }, + { EmulationFaults, "EmulationFaults", "emulation faults" }, + { RefCPUCycles, "RefCPUCycles", "Reference CPU cycles" }, +}; +static const int NumEntries = sizeof(entries) / sizeof(entries[0]); + +} + /*! \enum QTest::QBenchmarkMetric \since 4.7 @@ -92,73 +139,11 @@ */ const char * QTest::benchmarkMetricName(QBenchmarkMetric metric) { - switch (metric) { - case FramesPerSecond: - return "FramesPerSecond"; - case BitsPerSecond: - return "BitsPerSecond"; - case BytesPerSecond: - return "BytesPerSecond"; - case WalltimeMilliseconds: - return "WalltimeMilliseconds"; - case Events: - return "Events"; - case CPUTicks: - return "CPUTicks"; - case CPUMigrations: - return "CPUMigrations"; - case CPUCycles: - return "CPUCycles"; - case RefCPUCycles: - return "RefCPUCycles"; - case BusCycles: - return "BusCycles"; - case StalledCycles: - return "StalledCycles"; - case InstructionReads: - return "InstructionReads"; - case Instructions: - return "Instructions"; - case WalltimeNanoseconds: - return "WalltimeNanoseconds"; - case BytesAllocated: - return "BytesAllocated"; - case BranchInstructions: - return "BranchInstructions"; - case BranchMisses: - return "BranchMisses"; - case CacheReferences: - return "CacheReferences"; - case CacheReads: - return "CacheReads"; - case CacheWrites: - return "CacheWrites"; - case CachePrefetches: - return "CachePrefetches"; - case CacheMisses: - return "CacheMisses"; - case CacheReadMisses: - return "CacheReadMisses"; - case CacheWriteMisses: - return "CacheWriteMisses"; - case CachePrefetchMisses: - return "CachePrefetchMisses"; - case ContextSwitches: - return "ContextSwitches"; - case PageFaults: - return "PageFaults"; - case MinorPageFaults: - return "MinorPageFaults"; - case MajorPageFaults: - return "MajorPageFaults"; - case AlignmentFaults: - return "AlignmentFaults"; - case EmulationFaults: - return "EmulationFaults"; - default: - return ""; - } -}; + if (metric >= 0 && metric < QTest::NumEntries) + return entries[metric].name; + + return ""; +} /*! \since 4.7 @@ -166,71 +151,10 @@ const char * QTest::benchmarkMetricName(QBenchmarkMetric metric) */ const char * QTest::benchmarkMetricUnit(QBenchmarkMetric metric) { - switch (metric) { - case FramesPerSecond: - return "fps"; - case BitsPerSecond: - return "bits/s"; - case BytesPerSecond: - return "bytes/s"; - case WalltimeMilliseconds: - return "msecs"; - case Events: - return "events"; - case CPUTicks: - return "CPU ticks"; - case CPUMigrations: - return "CPU migrations"; - case CPUCycles: - return "CPU cycles"; - case RefCPUCycles: - return "Reference CPU cycles"; - case BusCycles: - return "bus cycles"; - case StalledCycles: - return "stalled cycles"; - case InstructionReads: - return "instruction reads"; - case Instructions: - return "instructions"; - case WalltimeNanoseconds: - return "nsecs"; - case BytesAllocated: - return "bytes"; - case BranchInstructions: - return "branch instructions"; - case BranchMisses: - return "branch misses"; - case CacheReferences: - return "cache references"; - case CacheReads: - return "cache loads"; - case CacheWrites: - return "cache stores"; - case CachePrefetches: - return "cache prefetches"; - case CacheMisses: - return "cache misses"; - case CacheReadMisses: - return "cache load misses"; - case CacheWriteMisses: - return "cache store misses"; - case CachePrefetchMisses: - return "cache prefetch misses"; - case ContextSwitches: - return "context switches"; - case PageFaults: - return "page faults"; - case MinorPageFaults: - return "minor page faults"; - case MajorPageFaults: - return "major page faults"; - case AlignmentFaults: - return "alignment faults"; - case EmulationFaults: - return "emulation faults"; - default: - return ""; - } + if (metric >= 0 && metric < QTest::NumEntries) + return entries[metric].unit; + + return ""; } +QT_END_NAMESPACE -- cgit v1.2.3