File: Stats.C

package info (click to toggle)
dxpc 3.9.2-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 1,140 kB
  • ctags: 1,253
  • sloc: cpp: 12,036; sh: 2,823; makefile: 78
file content (66 lines) | stat: -rw-r--r-- 1,522 bytes parent folder | download | duplicates (3)
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
#include "dxpcconf.h"
#include "Stats.H"
#include "util.H"

Stats::Stats()
{
    for (unsigned int i = 0; i < STATS_OPCODE_MAX; i++)
    {
        count_[i] = 0;
        bitsIn_[i] = 0;
        bitsOut_[i] = 0;
    }
}


Stats::~Stats()
{
}


void Stats::add(unsigned int opcode, unsigned int bitsIn,
                unsigned int bitsOut)
{
    count_[opcode]++;
    bitsIn_[opcode] += bitsIn;
    bitsOut_[opcode] += bitsOut;
}


void Stats::summarize(unsigned int &bitsIn, unsigned int &bitsOut,
                      int showDetails)
{
    unsigned int totalBitsIn = 0;
    unsigned int totalBitsOut = 0;

    if (showDetails)
    {
        *logofs << "\nmsg\t\tbits\tbits\tcompression" << ENDL;
        *logofs << "type\tcount\tin\tout\tratio" << ENDL;
        *logofs << "----\t-----\t-----\t-----\t-----------" << ENDL;
    }

    for (unsigned int i = 0; i < STATS_OPCODE_MAX; i++)
        if (count_[i])
        {
            totalBitsIn += bitsIn_[i];
            totalBitsOut += bitsOut_[i];
            if (showDetails)
            {
                if (i == 256)
                {
                    *logofs << "other";
                }
                else
                {
                    *logofs << i;
                }
                *logofs << '\t' << count_[i] << '\t' <<
                    bitsIn_[i] << '\t' << bitsOut_[i] << '\t' <<
                    (float) bitsIn_[i] / (float) bitsOut_[i] << ":1" << ENDL;
            }
        }

    bitsIn = totalBitsIn;
    bitsOut = totalBitsOut;
}