jeudi 29 août 2019

Build Graphics with result google benchmark for code c++

I wrote my first C ++ software and now I want to do some benchmarking with the google library.

I managed to do my first benchmarks with the result on the console, now I want to ask you a hand to understand the operations it does to make the results persistent and create a graph (I think the graph requires a separate library, right?)

There are my benchmarking inside one file cpp

#include <experimental/filesystem>

#include <benchmark/benchmark.h>
#include <glog/logging.h>

#include "../../core/ConfiguratorSingleton.h"
#include "../../core/SpyCBlock.h"

using namespace spyCBlock;
using namespace std;

string getRootPath()
{
  return experimental::filesystem::current_path();
}

const string FILE_DIR = getRootPath() + "/file/";

void createGraphTxOneFile();
void createGraphIdWalletOneFile();
void decodeJsonOneFile();

//BM
void BM_createGraphTxOneFile(benchmark::State& state)
{
    while (state.KeepRunning())
    {
        createGraphTxOneFile();
    }
}

void BM_decodeJsonOneFile(benchmark::State& state)
{
    while (state.KeepRunning())
    {
        decodeJsonOneFile();
    }
}

BENCHMARK(BM_createGraphTxOneFile)->Arg(8);
BENCHMARK(BM_decodeJsonOneFile)->Arg(8);

//Multi threding
BENCHMARK(BM_createGraphTxOneFile)->ThreadRange(2,16);
BENCHMARK(BM_decodeJsonOneFile)->ThreadRange(2,16);


void createGraphTxOneFile()
{
    string pathLogRoot = ConfiguratorSingleton::getInstance().getPathFileLogTest() + "/";
    FLAGS_minloglevel = 2;
    FLAGS_logtostderr = false;
    google::SetLogDestination(google::ERROR, pathLogRoot.append("unserialize_block_test.log").c_str());



    SpyCBlock spyCBlock;
    spyCBlock.convertBlkIntoGraphForm(FILE_DIR, FILE_DIR);
    benchmark::DoNotOptimize(pathLogRoot);
    benchmark::DoNotOptimize(spyCBlock);
}

//for this I need configure bitcoind with mainet
void createGraphIdWalletOneFile()
{
    string pathLogRoot = ConfiguratorSingleton::getInstance().getPathFileLogTest() + "/";
    FLAGS_minloglevel = 2;
    FLAGS_logtostderr = false;
    google::SetLogDestination(google::ERROR, pathLogRoot.append("unserialize_block_test.log").c_str());

    SpyCBlock spyCBlock;
    spyCBlock.convertBlkIntoGraphFormPubKey(FILE_DIR, FILE_DIR);

    benchmark::DoNotOptimize(pathLogRoot);
    benchmark::DoNotOptimize(spyCBlock);
}

void decodeJsonOneFile()
{
    string pathMockRoot = ConfiguratorSingleton::getInstance().getPathFileMockTest() + "/";
    string pathLogRoot = ConfiguratorSingleton::getInstance().getPathFileLogTest() + "/";

    FLAGS_minloglevel = 2;
    FLAGS_logtostderr = false;
    google::SetLogDestination(google::ERROR, pathLogRoot.append("unserialize_block_test.log").c_str());

    SpyCBlock spyCBlock;
    spyCBlock.convertBlkIntoJson(FILE_DIR, FILE_DIR);
    benchmark::DoNotOptimize(pathLogRoot);
    benchmark::DoNotOptimize(spyCBlock);
}


BENCHMARK_MAIN();

Aucun commentaire:

Enregistrer un commentaire