source: XMLIO_V2/external/include/Poco/HashStatistic.h @ 80

Last change on this file since 80 was 80, checked in by ymipsl, 14 years ago

ajout lib externe

  • Property svn:eol-style set to native
File size: 4.5 KB
Line 
1//
2// HashStatistic.h
3//
4// $Id: //poco/1.3/Foundation/include/Poco/HashStatistic.h#1 $
5//
6// Library: Foundation
7// Package: Hashing
8// Module:  HashStatistic
9//
10// Definition of the HashStatistic class.
11//
12// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
13// and Contributors.
14//
15// Permission is hereby granted, free of charge, to any person or organization
16// obtaining a copy of the software and accompanying documentation covered by
17// this license (the "Software") to use, reproduce, display, distribute,
18// execute, and transmit the Software, and to prepare derivative works of the
19// Software, and to permit third-parties to whom the Software is furnished to
20// do so, all subject to the following:
21//
22// The copyright notices in the Software and this entire statement, including
23// the above license grant, this restriction and the following disclaimer,
24// must be included in all copies of the Software, in whole or in part, and
25// all derivative works of the Software, unless such copies or derivative
26// works are solely in the form of machine-executable object code generated by
27// a source language processor.
28//
29// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
32// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
33// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
34// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
35// DEALINGS IN THE SOFTWARE.
36//
37
38
39#ifndef Foundation_HashStatistic_INCLUDED
40#define Foundation_HashStatistic_INCLUDED
41
42
43#include "Poco/Foundation.h"
44#include <vector>
45
46
47namespace Poco {
48
49
50//@ deprecated
51class Foundation_API HashStatistic
52        /// HashStatistic class bundles statistical information on the current state of a HashTable
53{
54public:
55        HashStatistic(
56                UInt32 tableSize, 
57                UInt32 numEntries, 
58                UInt32 numZeroEntries, 
59                UInt32 maxEntry, 
60                std::vector<UInt32> details = std::vector<UInt32>());
61                /// Creates the HashStatistic.
62
63        virtual ~HashStatistic();
64                /// Destroys the HashStatistic.
65
66        UInt32 maxPositionsOfTable() const;
67                /// Returns the maximum number of different hash values possible for the table
68
69        UInt32 numberOfEntries() const;
70                /// Returns the total number of entries currently stored in the HashTable
71
72        UInt32 numberOfZeroPositions() const;
73                /// Returns the number of hash positions that contain no entry.
74
75        double avgEntriesPerHash() const;
76                /// Returns the average number of entries per position in the Hashtable, the higher this value the less efficient
77                /// performs hashing. If a large value is returned and getNumberOfZeroPositions also returns a large value, this
78                /// indicates an inefficient hashing function. If the number of zero entries is low, resizing the HashTable, should
79                /// be enough to improve performance
80
81        double avgEntriesPerHashExclZeroEntries() const;
82                /// Same as getAvgEntriesPerHash but hash values that contain no entry are ignored,
83                /// getAvgEntriesPerHashExclZeroEntries >= getAvgEntriesPerHash will always be true.
84
85        UInt32 maxEntriesPerHash() const;
86                /// Returns the maximum number of entries per hash value found in the current table.
87
88        const std::vector<UInt32> detailedEntriesPerHash() const;
89                /// Will either be an empty vector or will contain for each possible hash value, the number of entries currently stored
90
91        std::string toString() const;
92                /// Converts the whole data structure into a string.
93
94private:
95        UInt32 _sizeOfTable;
96        UInt32 _numberOfEntries;
97        UInt32 _numZeroEntries;
98        UInt32 _maxEntriesPerHash;
99        std::vector<UInt32> _detailedEntriesPerHash;
100};
101
102
103inline UInt32 HashStatistic::maxPositionsOfTable() const
104{
105        return _sizeOfTable;
106}
107
108
109inline UInt32 HashStatistic::numberOfEntries() const
110{
111        return _numberOfEntries;
112}
113
114
115inline UInt32 HashStatistic::numberOfZeroPositions() const
116{
117        return _numZeroEntries;
118}
119
120
121inline double HashStatistic::avgEntriesPerHash() const
122{
123        return ((double) numberOfEntries()) / maxPositionsOfTable();
124}
125
126
127inline double HashStatistic::avgEntriesPerHashExclZeroEntries() const
128{
129        return ((double) numberOfEntries()) / (maxPositionsOfTable() - numberOfZeroPositions());
130}
131
132
133inline UInt32 HashStatistic::maxEntriesPerHash() const
134{
135        return _maxEntriesPerHash;
136}
137
138
139inline const std::vector<UInt32> HashStatistic::detailedEntriesPerHash() const
140{
141        return _detailedEntriesPerHash;
142}
143
144
145} // namespace Poco
146
147
148#endif // Foundation_HashStatistic_INCLUDED
Note: See TracBrowser for help on using the repository browser.