mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-25 05:52:42 -08:00
Use statistic (change.dylan.kinglet.170577)
Copied from Perforce Change: 20610 ServerID: perforce.ravenbrook.com
This commit is contained in:
parent
7b0f8dff50
commit
e156e36cee
1 changed files with 12 additions and 40 deletions
|
|
@ -1,18 +1,14 @@
|
|||
/* impl.h.meter: METER INTERFACE
|
||||
*
|
||||
* $HopeName: MMsrc!meter.h(trunk.2) $
|
||||
* Copyright (C) 1998 Harlequin Group plc. All rights reserved.
|
||||
* $HopeName: MMsrc!meter.h(trunk.3) $
|
||||
* Copyright (C) 1998, 1999 Harlequin Group plc. All rights reserved.
|
||||
*
|
||||
* Defines an interface for creating "meters" that accumulate the
|
||||
* number, total and mean^2 of a set of data points. These
|
||||
* accumulators can be used to report on the number, total, average,
|
||||
* and variance of the data set.
|
||||
*
|
||||
* .limitation: This computation accumulates a running mean^2,
|
||||
* minimizing overflow, but sacrificing numerical stablity for small
|
||||
* variances. For more accuracy, the data set should be emitted using
|
||||
* a telemetry stream and analyzed off line.
|
||||
* .sources: mps.design.metrics.
|
||||
*
|
||||
* .purpose: Defines an interface for creating "meters" that accumulate
|
||||
* the number, total and mean^2 of a set of data points. These
|
||||
* accumulators can be used to report on the number, total, average, and
|
||||
* variance of the data set.
|
||||
*/
|
||||
|
||||
#ifndef meter_h
|
||||
|
|
@ -42,37 +38,13 @@ extern void MeterAccumulate(Meter meter, Size amount);
|
|||
extern Res MeterWrite(Meter meter, mps_lib_FILE *stream);
|
||||
extern void MeterEmit(Meter meter);
|
||||
|
||||
|
||||
#define METER_IGNORE(expr) \
|
||||
BEGIN \
|
||||
(void)sizeof(expr); \
|
||||
END
|
||||
|
||||
#if defined(MPS_HOT_WHITE)
|
||||
|
||||
#define METER_DECL(meter) struct MeterStruct meter
|
||||
#define METER_DECL(meter) STATISTIC_DECL(struct MeterStruct meter)
|
||||
#define METER_INIT(meter, init, owner) \
|
||||
METER_IGNORE(meter); METER_IGNORE(init); METER_IGNORE(owner)
|
||||
STATISTIC(MeterInit(&(meter), init, owner))
|
||||
#define METER_ACC(meter, delta) \
|
||||
METER_IGNORE(meter); METER_IGNORE(delta)
|
||||
#define METER_WRITE(meter, stream) \
|
||||
(UNUSED(meter), UNUSED(stream), ResOK)
|
||||
#define METER_EMIT(meter) \
|
||||
METER_IGNORE(meter)
|
||||
STATISTIC(MeterAccumulate(&(meter), delta))
|
||||
#define METER_WRITE(meter, stream) MeterWrite(&(meter), stream)
|
||||
#define METER_EMIT(meter) STATISTIC(MeterEmit(meter))
|
||||
|
||||
|
||||
#elif defined (MPS_HOT_RED) || defined(MPS_COOL)
|
||||
|
||||
#define METER_DECL(meter) struct MeterStruct meter
|
||||
#define METER_INIT(meter, init, owner) MeterInit(&(meter), init, owner)
|
||||
#define METER_ACC(meter, delta) MeterAccumulate(&(meter), delta)
|
||||
#define METER_WRITE(meter, stream) (MeterWrite(&(meter), stream))
|
||||
#define METER_EMIT(meter) MeterEmit(meter)
|
||||
|
||||
#else
|
||||
|
||||
#error "No heat defined."
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* meter_h */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue