summaryrefslogtreecommitdiff
path: root/ace/Stats.h
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Stats.h')
-rw-r--r--ace/Stats.h186
1 files changed, 0 insertions, 186 deletions
diff --git a/ace/Stats.h b/ace/Stats.h
deleted file mode 100644
index e3c192235d2..00000000000
--- a/ace/Stats.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/* -*- C++ -*- */
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// ace
-//
-// = FILENAME
-// Stats.h
-//
-// = AUTHORS
-// David L. Levine
-//
-// ============================================================================
-
-#if !defined (ACE_STATS_H)
-#define ACE_STATS_H
-
-#include "ace/ACE.h"
-#include "ace/Containers.h"
-
-class ACE_Export ACE_Stats_Value
-{
- // = TITLE
- // Helper class for ACE_Stats.
- //
- // = DESCRIPTION
- // Container struct for 64-bit signed quantity and its
- // precision. It would be nicer to use a fixed-point class, but
- // this is sufficient. Users typically don't need to use this
- // class directly; see ACE_Stats below.
-public:
- ACE_Stats_Value (const u_int precision);
- // Constructor, which requires precision in terms of number of
- // decimal digits. The more variation in the data, and the greater
- // the data values, the smaller the precision must be to avoid
- // overflow in the standard deviation calculation. 3 might be a
- // good value, or maybe 4. 5 will probably be too large for
- // non-trivial data sets.
-
- u_int precision (void) const;
- // Accessor for precision.
-
- void whole (const ACE_UINT32);
- // Set the whole_ field.
-
- ACE_UINT32 whole (void) const;
- // Accessor for the whole_ field.
-
- void fractional (const ACE_UINT32);
- // Set the fractional_ field.
-
- ACE_UINT32 fractional (void) const;
- // Accessor for the fractional_ field.
-
- ACE_UINT32 fractional_field (void) const;
- // Calculates the maximum value of the fractional portion, given its
- // precision.
-
- void scaled_value (ACE_UINT64 &) const;
- // Access the value as an _unsigned_ 64 bit quantity. It scales the
- // value up by <precision> decimal digits, so that no precision will
- // be lost. It assumes that <whole_> is >= 0.
-
-private:
- ACE_UINT32 whole_;
- // The integer portion of the value.
-
- ACE_UINT32 fractional_;
- // The fractional portion of the value.
-
- u_int precision_;
- // The number of decimal digits of precision represented by
- // <fractional_>. Not declared const, so the only way to change it
- // is via the assignment operator.
-
- ACE_UNIMPLEMENTED_FUNC (ACE_Stats_Value (void))
-};
-
-class ACE_Export ACE_Stats
-{
- // = TITLE
- // Provides simple statistical analysis.
- //
- // = DESCRIPTION
- // Simple statistical analysis package. Prominent features are:
- // 1) It does not use any floating point arithmetic.
- // 2) It handles positive and/or negative sample values. The
- // sample value type is ACE_INT32.
- // 3) It uses 64 bit unsigned, but not 64 bit signed, quantities
- // internally.
- // 4) It checks for overflow of internal state.
- // 5) It has no static variables of other than built-in types.
- //
- // Example usage:
- // ACE_Stats stats;
- // for (u_int i = 0; i < n; ++i)
- // {
- // const ACE_UINT32 sample = /* ... */;
- // stats.sample (sample);
- // }
- // stats.print_summary (3);
-public:
- ACE_Stats (void);
- // Default constructor.
-
- int sample (const ACE_INT32 value);
- // Provide a new sample. Returns 0 on success, -1 if it fails due
- // to running out of memory.
-
- ACE_UINT32 samples (void) const;
- // Access the number of samples provided so far.
-
- ACE_INT32 min_value (void) const;
- // Value of the minimum sample provided so far.
-
- ACE_INT32 max_value (void) const;
- // Value of the maximum sample provided so far.
-
- void mean (ACE_Stats_Value &mean,
- const ACE_UINT32 scale_factor = 1);
- // Access the mean of all samples provided so far. The fractional
- // part is to the specified number of digits. E.g., 3 fractional
- // digits specifies that the fractional part is in thousandths.
-
- int std_dev (ACE_Stats_Value &std_dev,
- const ACE_UINT32 scale_factor = 1);
- // Access the standard deviation, whole and fractional parts. See
- // description of <mean> method for argument descriptions.
-
- int print_summary (const u_int precision,
- const ACE_UINT32 scale_factor = 1,
- FILE * = stdout) const;
- // Print summary statistics. If scale_factor is not 1, then the
- // results are divided by it, i.e., each of the samples is scaled
- // down by it. Returns -1 if internal overflow had been reached.
- // If that happens, you might retry with a smaller precision.
-
- void reset ();
- // Initialize internal state.
-
- void dump (void) const;
- // Print summary statictics to stdout.
-
- static void quotient (const ACE_UINT64 dividend,
- const ACE_UINT32 divisor,
- ACE_Stats_Value &quotient);
- // Utility division function, for ACE_UINT64 dividend.
-
- static void quotient (const ACE_Stats_Value &dividend,
- const ACE_UINT32 divisor,
- ACE_Stats_Value &quotient);
- // Utility division function, for ACE_Stats_Value dividend.
-
- static void square_root (const ACE_UINT64 n,
- ACE_Stats_Value &square_root);
- // Sqrt function, which uses an oversimplified version of Newton's
- // method. It's not fast, but it doesn't require floating point
- // support.
-
-private:
- u_int overflow_;
- // Internal indication of whether there has been overflow.
-
- ACE_UINT32 number_of_samples_;
- // Number of samples.
-
- ACE_INT32 min_;
- // Minimum sample value.
-
- ACE_INT32 max_;
- // Maximum sample value.
-
- ACE_Stats_Value cached_mean_;
- // Cached mean value, because std_dev () needs to know the mean.
-
- ACE_Unbounded_Queue <ACE_INT32> samples_;
- // The samples.
-};
-
-#if defined (__ACE_INLINE__)
-# include "ace/Stats.i"
-#endif /* __ACE_INLINE__ */
-
-#endif /* ! ACE_STATS_H */