| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- #pragma once
- #if PROFILE_DICTIONARY
- class DictionaryStats;
- struct DictionaryType
- {
- int instancesCount;
- DictionaryType* pNext;
- char name[256];
- DictionaryStats* instances;
- };
- class DictionaryStats
- {
- public:
- static DictionaryStats* Create(const char* name, uint initialSize);
- static void OutputStats();
- private:
- static void ComputeStats(uint input, double &total, double &max);
- static void ComputeStats(double input, double &total, double &max);
- static void ClearStats();
- static DictionaryType* dictionaryTypes;
- static CRITICAL_SECTION dictionaryTypesCriticalSection;
- public:
- void Resize(uint newSize, uint emptyBucketCount);
- void Insert(uint depth);
- void Remove(bool isBucketEmpty);
- void Lookup(uint depth);
- DictionaryStats* Clone();
- DictionaryStats* pNext;
- private:
- DictionaryStats(const char* name, uint initialSize);
- uint initialSize;
- uint finalSize;
- uint countOfEmptyBuckets;
- uint countOfResize;
- uint itemCount;
- uint maxDepth;
- uint lookupCount;
- uint collisionCount;
- uint lookupDepthTotal;
- uint maxLookupDepth;
- char* pName;
- };
- #endif
|