stattest.cc

来自「M5,一个功能强大的多处理器系统模拟器.很多针对处理器架构,性能的研究都使用它作」· CC 代码 · 共 558 行

CC
558
字号
/* * Copyright (c) 2003, 2004, 2005 * The Regents of The University of Michigan * All Rights Reserved * * This code is part of the M5 simulator. * * Permission is granted to use, copy, create derivative works and * redistribute this software and such derivative works for any * purpose, so long as the copyright notice above, this grant of * permission, and the disclaimer below appear in all copies made; and * so long as the name of The University of Michigan is not used in * any advertising or publicity pertaining to the use or distribution * of this software without specific, written prior authorization. * * THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION FROM THE * UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY PURPOSE, AND * WITHOUT WARRANTY BY THE UNIVERSITY OF MICHIGAN OF ANY KIND, EITHER * EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. THE REGENTS OF THE UNIVERSITY OF MICHIGAN SHALL NOT BE * LIABLE FOR ANY DAMAGES, INCLUDING DIRECT, SPECIAL, INDIRECT, * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WITH RESPECT TO ANY CLAIM * ARISING OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN * IF IT HAS BEEN OR IS HEREAFTER ADVISED OF THE POSSIBILITY OF SUCH * DAMAGES. * * Authors: Nathan L. Binkert */#include <iomanip>#include <iostream>#include <fstream>#include <string>#include <unistd.h>#include "base/cprintf.hh"#include "base/misc.hh"#include "base/statistics.hh"#include "base/stats/text.hh"#include "base/stats/mysql.hh"#include "sim/host.hh"using namespace std;using namespace Stats;Tick curTick = 0;Tick ticksPerSecond = ULL(2000000000);Scalar<> s1;Scalar<> s2;Average<> s3;Scalar<> s4;Vector<> s5;Distribution<> s6;Vector<> s7;AverageVector<> s8;StandardDeviation<> s9;AverageDeviation<> s10;Scalar<> s11;Distribution<> s12;VectorDistribution<> s13;VectorStandardDeviation<> s14;VectorAverageDeviation<> s15;Vector2d<> s16;Formula f1;Formula f2;Formula f3;Value f4;Value f5;Formula f6;Formula f7;ostream *outputStream = &cout;doubletestfunc(){    return 9.8;}class TestClass {  public:    double operator()() { return 9.7; }};char *progname = "";voidusage(){    panic("incorrect usage.\n"          "usage:\n"          "\t%s [-t [-c] [-d]]\n", progname);}intmain(int argc, char *argv[]){    bool descriptions = false;    bool compat = false;    bool text = false;    string mysql_name;    string mysql_host;    string mysql_user = "binkertn";    string mysql_passwd;    char c;    progname = argv[0];    while ((c = getopt(argc, argv, "cdh:P:p:s:tu:")) != -1) {        switch (c) {          case 'c':            compat = true;            break;          case 'd':            descriptions = true;            break;          case 'h':            mysql_host = optarg;            break;          case 'P':            mysql_passwd = optarg;            break;          case 's':            mysql_name = optarg;            break;          case 't':            text = true;            break;          case 'u':            mysql_user = optarg;            break;          default:            usage();        }    }    if (!text && (compat || descriptions))        usage();    s5.init(5);    s6.init(1, 100, 13);    s7.init(7);    s8.init(10);    s12.init(1, 100, 13);    s13.init(4, 0, 99, 10);    s14.init(9);    s15.init(10);    s16.init(2, 9);    s1        .name("Stat01")        .desc("this is statistic 1")        ;    s2        .name("Stat02")        .desc("this is statistic 2")        .prereq(s11)        ;    s3        .name("Stat03")        .desc("this is statistic 3")        .prereq(f7)        ;    s4        .name("Stat04")        .desc("this is statistic 4")        .prereq(s11)        ;    s5        .name("Stat05")        .desc("this is statistic 5")        .prereq(s11)        .subname(0, "foo1")        .subname(1, "foo2")        .subname(2, "foo3")        .subname(3, "foo4")        .subname(4, "foo5")        ;    s6        .name("Stat06")        .desc("this is statistic 6")        .prereq(s11)        ;    s7        .name("Stat07")        .desc("this is statistic 7")        .precision(1)        .flags(pdf | total)        .prereq(s11)        ;    s8        .name("Stat08")        .desc("this is statistic 8")        .precision(2)        .prereq(s11)        .subname(4, "blarg")        ;    s9        .name("Stat09")        .desc("this is statistic 9")        .precision(4)        .prereq(s11)        ;    s10        .name("Stat10")        .desc("this is statistic 10")        .prereq(s11)        ;    s12        .name("Stat12")        .desc("this is statistic 12")        ;    s13        .name("Stat13")        .desc("this is statistic 13")        ;    s14        .name("Stat14")        .desc("this is statistic 14")        ;    s15        .name("Stat15")        .desc("this is statistic 15")        ;    s16        .name("Stat16")        .desc("this is statistic 16")        .flags(total)        .subname(0, "sub0")        .subname(1, "sub1")        .ysubname(0, "y0")        .ysubname(1, "y1")        ;    f1        .name("Formula1")        .desc("this is formula 1")        .prereq(s11)        ;    f2        .name("Formula2")        .desc("this is formula 2")        .prereq(s11)        .precision(1)        ;    f3        .name("Formula3")        .desc("this is formula 3")        .prereq(s11)        .subname(0, "bar1")        .subname(1, "bar2")        .subname(2, "bar3")        .subname(3, "bar4")        .subname(4, "bar5")        ;    f4        .functor(testfunc)        .name("Formula4")        .desc("this is formula 4")        ;    TestClass testclass;    f5        .functor(testclass)        .name("Formula5")        .desc("this is formula 5")        ;    f6        .name("Formula6")        .desc("this is formula 6")        ;    f1 = s1 + s2;    f2 = (-s1) / (-s2) * (-s3 + ULL(100) + s4);    f3 = sum(s5) * s7;    f6 += constant(10.0);    f6 += s5[3];    f7 = constant(1);    check();    reset();    s16[1][0] = 1;    s16[0][1] = 3;    s16[0][0] = 2;    s16[1][1] = 9;    s16[1][1] += 9;    s16[1][8] += 8;    s16[1][7] += 7;    s16[1][6] += 6;    s16[1][5] += 5;    s16[1][4] += 4;    s11 = 1;    s3 = 9;    s8[3] = 9;    s15[0].sample(1234);    s15[1].sample(1234);    s15[2].sample(1234);    s15[3].sample(1234);    s15[4].sample(1234);    s15[5].sample(1234);    s15[6].sample(1234);    s15[7].sample(1234);    s15[8].sample(1234);    s15[9].sample(1234);    s10.sample(1000000000);    curTick += ULL(1000000);    s10.sample(100000);    s10.sample(100000);    s10.sample(100000);    s10.sample(100000);    s10.sample(100000);    s10.sample(100000);    s10.sample(100000);    s10.sample(100000);    s10.sample(100000);    s10.sample(100000);    s10.sample(100000);    s10.sample(100000);    s10.sample(100000);    s13[0].sample(12);    s13[1].sample(29);    s13[2].sample(12);    s13[3].sample(29);    s13[0].sample(42);    s13[1].sample(29);    s13[2].sample(42);    s13[3].sample(32);    s13[0].sample(52);    s13[1].sample(49);    s13[2].sample(42);    s13[3].sample(25);    s13[0].sample(32);    s13[1].sample(49);    s13[2].sample(22);    s13[3].sample(49);    s13[0].sample(62);    s13[1].sample(99);    s13[2].sample(72);    s13[3].sample(23);    s13[0].sample(52);    s13[1].sample(78);    s13[2].sample(69);    s13[3].sample(49);    s14[0].sample(1234);    s14[1].sample(4134);    s14[4].sample(1213);    s14[3].sample(1124);    s14[2].sample(1243);    s14[7].sample(1244);    s14[4].sample(7234);    s14[2].sample(9234);    s14[3].sample(1764);    s14[7].sample(1564);    s14[3].sample(3234);    s14[1].sample(2234);    s14[5].sample(1234);    s14[2].sample(4334);    s14[2].sample(1234);    s14[4].sample(4334);    s14[6].sample(1234);    s14[8].sample(8734);    s14[1].sample(5234);    s14[3].sample(8234);    s14[7].sample(5234);    s14[4].sample(4434);    s14[3].sample(7234);    s14[2].sample(1934);    s14[1].sample(9234);    s14[5].sample(5634);    s14[3].sample(1264);    s14[7].sample(5223);    s14[0].sample(1234);    s14[0].sample(5434);    s14[3].sample(8634);    s14[1].sample(1234);    s15[0].sample(1234);    s15[1].sample(4134);    curTick += ULL(1000000);    s15[4].sample(1213);    curTick += ULL(1000000);    s15[3].sample(1124);    curTick += ULL(1000000);    s15[2].sample(1243);    curTick += ULL(1000000);    s15[7].sample(1244);    curTick += ULL(1000000);    s15[4].sample(7234);    s15[2].sample(9234);    s15[3].sample(1764);    s15[7].sample(1564);    s15[3].sample(3234);    s15[1].sample(2234);    curTick += ULL(1000000);    s15[5].sample(1234);    curTick += ULL(1000000);    s15[9].sample(4334);    curTick += ULL(1000000);    s15[2].sample(1234);    curTick += ULL(1000000);    s15[4].sample(4334);    s15[6].sample(1234);    curTick += ULL(1000000);    s15[8].sample(8734);    curTick += ULL(1000000);    s15[1].sample(5234);    curTick += ULL(1000000);    s15[3].sample(8234);    curTick += ULL(1000000);    s15[7].sample(5234);    s15[4].sample(4434);    s15[3].sample(7234);    s15[2].sample(1934);    s15[1].sample(9234);    curTick += ULL(1000000);    s15[5].sample(5634);    s15[3].sample(1264);    s15[7].sample(5223);    s15[0].sample(1234);    s15[0].sample(5434);    s15[3].sample(8634);    curTick += ULL(1000000);    s15[1].sample(1234);    s4 = curTick;    s8[3] = 99999;    s3 = 12;    s3++;    curTick += 9;    s1 = 9;    s1 += 9;    s1 -= 11;    s1++;    ++s1;    s1--;    --s1;    s2 = 9;    s5[0] += 1;    s5[1] += 2;    s5[2] += 3;    s5[3] += 4;    s5[4] += 5;    s7[0] = 10;    s7[1] = 20;    s7[2] = 30;    s7[3] = 40;    s7[4] = 50;    s7[5] = 60;    s7[6] = 70;    s6.sample(0);    s6.sample(1);    s6.sample(2);    s6.sample(3);    s6.sample(4);    s6.sample(5);    s6.sample(6);    s6.sample(7);    s6.sample(8);    s6.sample(9);    s6.sample(10);    s6.sample(10);    s6.sample(10);    s6.sample(10);    s6.sample(10);    s6.sample(10);    s6.sample(10);    s6.sample(10);    s6.sample(11);    s6.sample(19);    s6.sample(20);    s6.sample(20);    s6.sample(21);    s6.sample(21);    s6.sample(31);    s6.sample(98);    s6.sample(99);    s6.sample(99);    s6.sample(99);    s7[0] = 700;    s7[1] = 600;    s7[2] = 500;    s7[3] = 400;    s7[4] = 300;    s7[5] = 200;    s7[6] = 100;    s9.sample(100);    s9.sample(100);    s9.sample(100);    s9.sample(100);    s9.sample(10);    s9.sample(10);    s9.sample(10);    s9.sample(10);    s9.sample(10);    curTick += 9;    s4 = curTick;    s6.sample(100);    s6.sample(100);    s6.sample(100);    s6.sample(101);    s6.sample(102);    s12.sample(100);    if (text) {        Text out(cout);        out.descriptions = descriptions;        out.compat = compat;        out();    }    if (!mysql_name.empty()) {        MySql out;        out.connect(mysql_host, mysql_user, mysql_passwd, "m5stats",                    mysql_name, "test");        out();    }    return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?