Overview
Comment: | time_statistics: new parent package for time statistics gathering |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
13debf8a9ef3b6ed6a40f65d1e7c0d64 |
User & Date: | nat on 2014-09-02 17:21:40 |
Other Links: | manifest | tags |
Context
2014-09-03
| ||
17:28 | time_statistics-tests: new test packge for Time_Statistics hierarchy check-in: 55b72004aa user: nat tags: trunk | |
2014-09-02
| ||
17:21 | time_statistics: new parent package for time statistics gathering check-in: 13debf8a9e user: nat tags: trunk | |
2014-09-01
| ||
18:29 | s_expressions-atom_buffers: fix stream read check-in: 0e2f32ef01 user: nat tags: trunk | |
Changes
Added src/natools-time_statistics.adb version [0f634c4fdb].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | ------------------------------------------------------------------------------ -- Copyright (c) 2014, Natacha Porté -- -- -- -- Permission to use, copy, modify, and distribute this software for any -- -- purpose with or without fee is hereby granted, provided that the above -- -- copyright notice and this permission notice appear in all copies. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -- -- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -- -- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -- -- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -- -- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -- -- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -- -- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -- ------------------------------------------------------------------------------ package body Natools.Time_Statistics is ---------------------- -- Public Interface -- ---------------------- overriding procedure Add (Self : in out Summary; Measure : in Duration) is begin Self.Data.Add (Measure); end Add; ------------------------------ -- Summary Protected Object -- ------------------------------ protected body Summary_Data is procedure Add (Measure : in Duration) is begin if Measure > Max then Max := Measure; end if; if Measure < Min then Min := Measure; end if; Count := Count + 1; Current_Mean := Current_Mean + (Measure - Current_Mean) / Duration (Count); end Add; function Minimum return Duration is begin return Min; end Minimum; function Maximum return Duration is begin return Max; end Maximum; function Mean return Duration is begin return Current_Mean; end Mean; function Sample_Count return Natural is begin return Count; end Sample_Count; end Summary_Data; end Natools.Time_Statistics; |
Added src/natools-time_statistics.ads version [5f42e178c0].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | ------------------------------------------------------------------------------ -- Copyright (c) 2014, Natacha Porté -- -- -- -- Permission to use, copy, modify, and distribute this software for any -- -- purpose with or without fee is hereby granted, provided that the above -- -- copyright notice and this permission notice appear in all copies. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -- -- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -- -- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -- -- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -- -- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -- -- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -- -- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -- ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ -- Natools.Time_Statistics is the root of various utilities to measure time -- -- and gather statistics. -- -- It also provides basic constant-space accumulator that keeps a summary -- -- of seen values. -- ------------------------------------------------------------------------------ package Natools.Time_Statistics is pragma Pure; type Accumulator is limited interface; procedure Add (Self : in out Accumulator; Measure : in Duration) is abstract; -- Add Measure to the accumulated statistics in Self type Summary is limited new Accumulator with private; -- Constant-space aggregator of duration values overriding procedure Add (Self : in out Summary; Measure : in Duration); -- Add Measure to the accumulated statistics not overriding function Minimum (Self : Summary) return Duration; not overriding function Maximum (Self : Summary) return Duration; not overriding function Mean (Self : Summary) return Duration; not overriding function Sample_Count (Self : Summary) return Natural; private protected type Summary_Data is procedure Add (Measure : in Duration); function Minimum return Duration; function Maximum return Duration; function Mean return Duration; function Sample_Count return Natural; private Max : Duration := Duration'First; Min : Duration := Duration'Last; Current_Mean : Duration := 0.0; Count : Natural := 0; end Summary_Data; type Summary is limited new Accumulator with record Data : Summary_Data; end record; not overriding function Minimum (Self : Summary) return Duration is (Self.Data.Minimum); not overriding function Maximum (Self : Summary) return Duration is (Self.Data.Maximum); not overriding function Mean (Self : Summary) return Duration is (Self.Data.Mean); not overriding function Sample_Count (Self : Summary) return Natural is (Self.Data.Sample_Count); end Natools.Time_Statistics; |