blob: 3cfed684c5abe49fe105c39b12ec5574744cb560 [file] [log] [blame]
// This file was GENERATED by command:
// pump.py benchmark_internal.h.pump
// DO NOT EDIT BY HAND!!!
//
// Copyright 2015 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#include "base/compiler_specific.h"
// clang-format off
#define TRACE_EVENT_BENCHMARK1(benchmark, event_name_1, measurement_type_1)\
MSVC_PUSH_DISABLE_WARNING(6326)\
class benchmark : public cobalt::trace_event::Benchmark {\
public:\
void Experiment() override;\
void AnalyzeTraceEvent(\
const scoped_refptr<cobalt::trace_event::EventParser::ScopedEvent>& \
event)\
override {\
if (event->name() == event_name_1) {\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_1_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_1_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_1_last_begin_time_.is_null()) {\
event_1_samples_.push_back(\
(event->begin_event().timestamp() -\
event_1_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_1_last_begin_time_ = event->begin_event().timestamp();\
}\
}\
std::vector<Result> CompileResults() override {\
std::vector<Result> results;\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" flow duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" in-scope duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_1) +\
" time between event starts in seconds", \
event_1_samples_));\
} break;\
}\
return results;\
}\
private:\
std::vector<double> event_1_samples_;\
base::TimeTicks event_1_last_begin_time_;\
};\
\
TRACE_EVENT_REGISTER_BENCHMARK(benchmark)\
\
void benchmark::Experiment()\
MSVC_POP_WARNING()
#define TRACE_EVENT_BENCHMARK2(benchmark, event_name_1, measurement_type_1, \
event_name_2, measurement_type_2)\
MSVC_PUSH_DISABLE_WARNING(6326)\
class benchmark : public cobalt::trace_event::Benchmark {\
public:\
void Experiment() override;\
void AnalyzeTraceEvent(\
const scoped_refptr<cobalt::trace_event::EventParser::ScopedEvent>& \
event)\
override {\
if (event->name() == event_name_1) {\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_1_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_1_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_1_last_begin_time_.is_null()) {\
event_1_samples_.push_back(\
(event->begin_event().timestamp() -\
event_1_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_1_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_2) {\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_2_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_2_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_2_last_begin_time_.is_null()) {\
event_2_samples_.push_back(\
(event->begin_event().timestamp() -\
event_2_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_2_last_begin_time_ = event->begin_event().timestamp();\
}\
}\
std::vector<Result> CompileResults() override {\
std::vector<Result> results;\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" flow duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" in-scope duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_1) +\
" time between event starts in seconds", \
event_1_samples_));\
} break;\
}\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" flow duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" in-scope duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_2) +\
" time between event starts in seconds", \
event_2_samples_));\
} break;\
}\
return results;\
}\
private:\
std::vector<double> event_1_samples_;\
base::TimeTicks event_1_last_begin_time_;\
std::vector<double> event_2_samples_;\
base::TimeTicks event_2_last_begin_time_;\
};\
\
TRACE_EVENT_REGISTER_BENCHMARK(benchmark)\
\
void benchmark::Experiment()\
MSVC_POP_WARNING()
#define TRACE_EVENT_BENCHMARK3(benchmark, event_name_1, measurement_type_1, \
event_name_2, measurement_type_2, event_name_3, measurement_type_3)\
MSVC_PUSH_DISABLE_WARNING(6326)\
class benchmark : public cobalt::trace_event::Benchmark {\
public:\
void Experiment() override;\
void AnalyzeTraceEvent(\
const scoped_refptr<cobalt::trace_event::EventParser::ScopedEvent>& \
event)\
override {\
if (event->name() == event_name_1) {\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_1_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_1_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_1_last_begin_time_.is_null()) {\
event_1_samples_.push_back(\
(event->begin_event().timestamp() -\
event_1_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_1_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_2) {\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_2_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_2_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_2_last_begin_time_.is_null()) {\
event_2_samples_.push_back(\
(event->begin_event().timestamp() -\
event_2_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_2_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_3) {\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_3_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_3_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_3_last_begin_time_.is_null()) {\
event_3_samples_.push_back(\
(event->begin_event().timestamp() -\
event_3_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_3_last_begin_time_ = event->begin_event().timestamp();\
}\
}\
std::vector<Result> CompileResults() override {\
std::vector<Result> results;\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" flow duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" in-scope duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_1) +\
" time between event starts in seconds", \
event_1_samples_));\
} break;\
}\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" flow duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" in-scope duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_2) +\
" time between event starts in seconds", \
event_2_samples_));\
} break;\
}\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" flow duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" in-scope duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_3) +\
" time between event starts in seconds", \
event_3_samples_));\
} break;\
}\
return results;\
}\
private:\
std::vector<double> event_1_samples_;\
base::TimeTicks event_1_last_begin_time_;\
std::vector<double> event_2_samples_;\
base::TimeTicks event_2_last_begin_time_;\
std::vector<double> event_3_samples_;\
base::TimeTicks event_3_last_begin_time_;\
};\
\
TRACE_EVENT_REGISTER_BENCHMARK(benchmark)\
\
void benchmark::Experiment()\
MSVC_POP_WARNING()
#define TRACE_EVENT_BENCHMARK4(benchmark, event_name_1, measurement_type_1, \
event_name_2, measurement_type_2, event_name_3, measurement_type_3, \
event_name_4, measurement_type_4)\
MSVC_PUSH_DISABLE_WARNING(6326)\
class benchmark : public cobalt::trace_event::Benchmark {\
public:\
void Experiment() override;\
void AnalyzeTraceEvent(\
const scoped_refptr<cobalt::trace_event::EventParser::ScopedEvent>& \
event)\
override {\
if (event->name() == event_name_1) {\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_1_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_1_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_1_last_begin_time_.is_null()) {\
event_1_samples_.push_back(\
(event->begin_event().timestamp() -\
event_1_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_1_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_2) {\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_2_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_2_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_2_last_begin_time_.is_null()) {\
event_2_samples_.push_back(\
(event->begin_event().timestamp() -\
event_2_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_2_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_3) {\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_3_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_3_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_3_last_begin_time_.is_null()) {\
event_3_samples_.push_back(\
(event->begin_event().timestamp() -\
event_3_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_3_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_4) {\
switch (measurement_type_4) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_4_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_4_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_4_last_begin_time_.is_null()) {\
event_4_samples_.push_back(\
(event->begin_event().timestamp() -\
event_4_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_4_last_begin_time_ = event->begin_event().timestamp();\
}\
}\
std::vector<Result> CompileResults() override {\
std::vector<Result> results;\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" flow duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" in-scope duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_1) +\
" time between event starts in seconds", \
event_1_samples_));\
} break;\
}\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" flow duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" in-scope duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_2) +\
" time between event starts in seconds", \
event_2_samples_));\
} break;\
}\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" flow duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" in-scope duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_3) +\
" time between event starts in seconds", \
event_3_samples_));\
} break;\
}\
switch (measurement_type_4) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_4) +\
" flow duration in seconds", \
event_4_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_4) +\
" in-scope duration in seconds", \
event_4_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_4) +\
" time between event starts in seconds", \
event_4_samples_));\
} break;\
}\
return results;\
}\
private:\
std::vector<double> event_1_samples_;\
base::TimeTicks event_1_last_begin_time_;\
std::vector<double> event_2_samples_;\
base::TimeTicks event_2_last_begin_time_;\
std::vector<double> event_3_samples_;\
base::TimeTicks event_3_last_begin_time_;\
std::vector<double> event_4_samples_;\
base::TimeTicks event_4_last_begin_time_;\
};\
\
TRACE_EVENT_REGISTER_BENCHMARK(benchmark)\
\
void benchmark::Experiment()\
MSVC_POP_WARNING()
#define TRACE_EVENT_BENCHMARK5(benchmark, event_name_1, measurement_type_1, \
event_name_2, measurement_type_2, event_name_3, measurement_type_3, \
event_name_4, measurement_type_4, event_name_5, measurement_type_5)\
MSVC_PUSH_DISABLE_WARNING(6326)\
class benchmark : public cobalt::trace_event::Benchmark {\
public:\
void Experiment() override;\
void AnalyzeTraceEvent(\
const scoped_refptr<cobalt::trace_event::EventParser::ScopedEvent>& \
event)\
override {\
if (event->name() == event_name_1) {\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_1_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_1_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_1_last_begin_time_.is_null()) {\
event_1_samples_.push_back(\
(event->begin_event().timestamp() -\
event_1_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_1_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_2) {\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_2_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_2_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_2_last_begin_time_.is_null()) {\
event_2_samples_.push_back(\
(event->begin_event().timestamp() -\
event_2_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_2_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_3) {\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_3_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_3_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_3_last_begin_time_.is_null()) {\
event_3_samples_.push_back(\
(event->begin_event().timestamp() -\
event_3_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_3_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_4) {\
switch (measurement_type_4) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_4_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_4_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_4_last_begin_time_.is_null()) {\
event_4_samples_.push_back(\
(event->begin_event().timestamp() -\
event_4_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_4_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_5) {\
switch (measurement_type_5) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_5_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_5_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_5_last_begin_time_.is_null()) {\
event_5_samples_.push_back(\
(event->begin_event().timestamp() -\
event_5_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_5_last_begin_time_ = event->begin_event().timestamp();\
}\
}\
std::vector<Result> CompileResults() override {\
std::vector<Result> results;\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" flow duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" in-scope duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_1) +\
" time between event starts in seconds", \
event_1_samples_));\
} break;\
}\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" flow duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" in-scope duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_2) +\
" time between event starts in seconds", \
event_2_samples_));\
} break;\
}\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" flow duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" in-scope duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_3) +\
" time between event starts in seconds", \
event_3_samples_));\
} break;\
}\
switch (measurement_type_4) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_4) +\
" flow duration in seconds", \
event_4_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_4) +\
" in-scope duration in seconds", \
event_4_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_4) +\
" time between event starts in seconds", \
event_4_samples_));\
} break;\
}\
switch (measurement_type_5) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_5) +\
" flow duration in seconds", \
event_5_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_5) +\
" in-scope duration in seconds", \
event_5_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_5) +\
" time between event starts in seconds", \
event_5_samples_));\
} break;\
}\
return results;\
}\
private:\
std::vector<double> event_1_samples_;\
base::TimeTicks event_1_last_begin_time_;\
std::vector<double> event_2_samples_;\
base::TimeTicks event_2_last_begin_time_;\
std::vector<double> event_3_samples_;\
base::TimeTicks event_3_last_begin_time_;\
std::vector<double> event_4_samples_;\
base::TimeTicks event_4_last_begin_time_;\
std::vector<double> event_5_samples_;\
base::TimeTicks event_5_last_begin_time_;\
};\
\
TRACE_EVENT_REGISTER_BENCHMARK(benchmark)\
\
void benchmark::Experiment()\
MSVC_POP_WARNING()
#define TRACE_EVENT_BENCHMARK6(benchmark, event_name_1, measurement_type_1, \
event_name_2, measurement_type_2, event_name_3, measurement_type_3, \
event_name_4, measurement_type_4, event_name_5, measurement_type_5, \
event_name_6, measurement_type_6)\
MSVC_PUSH_DISABLE_WARNING(6326)\
class benchmark : public cobalt::trace_event::Benchmark {\
public:\
void Experiment() override;\
void AnalyzeTraceEvent(\
const scoped_refptr<cobalt::trace_event::EventParser::ScopedEvent>& \
event)\
override {\
if (event->name() == event_name_1) {\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_1_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_1_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_1_last_begin_time_.is_null()) {\
event_1_samples_.push_back(\
(event->begin_event().timestamp() -\
event_1_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_1_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_2) {\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_2_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_2_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_2_last_begin_time_.is_null()) {\
event_2_samples_.push_back(\
(event->begin_event().timestamp() -\
event_2_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_2_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_3) {\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_3_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_3_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_3_last_begin_time_.is_null()) {\
event_3_samples_.push_back(\
(event->begin_event().timestamp() -\
event_3_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_3_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_4) {\
switch (measurement_type_4) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_4_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_4_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_4_last_begin_time_.is_null()) {\
event_4_samples_.push_back(\
(event->begin_event().timestamp() -\
event_4_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_4_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_5) {\
switch (measurement_type_5) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_5_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_5_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_5_last_begin_time_.is_null()) {\
event_5_samples_.push_back(\
(event->begin_event().timestamp() -\
event_5_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_5_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_6) {\
switch (measurement_type_6) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_6_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_6_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_6_last_begin_time_.is_null()) {\
event_6_samples_.push_back(\
(event->begin_event().timestamp() -\
event_6_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_6_last_begin_time_ = event->begin_event().timestamp();\
}\
}\
std::vector<Result> CompileResults() override {\
std::vector<Result> results;\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" flow duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" in-scope duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_1) +\
" time between event starts in seconds", \
event_1_samples_));\
} break;\
}\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" flow duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" in-scope duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_2) +\
" time between event starts in seconds", \
event_2_samples_));\
} break;\
}\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" flow duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" in-scope duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_3) +\
" time between event starts in seconds", \
event_3_samples_));\
} break;\
}\
switch (measurement_type_4) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_4) +\
" flow duration in seconds", \
event_4_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_4) +\
" in-scope duration in seconds", \
event_4_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_4) +\
" time between event starts in seconds", \
event_4_samples_));\
} break;\
}\
switch (measurement_type_5) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_5) +\
" flow duration in seconds", \
event_5_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_5) +\
" in-scope duration in seconds", \
event_5_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_5) +\
" time between event starts in seconds", \
event_5_samples_));\
} break;\
}\
switch (measurement_type_6) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_6) +\
" flow duration in seconds", \
event_6_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_6) +\
" in-scope duration in seconds", \
event_6_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_6) +\
" time between event starts in seconds", \
event_6_samples_));\
} break;\
}\
return results;\
}\
private:\
std::vector<double> event_1_samples_;\
base::TimeTicks event_1_last_begin_time_;\
std::vector<double> event_2_samples_;\
base::TimeTicks event_2_last_begin_time_;\
std::vector<double> event_3_samples_;\
base::TimeTicks event_3_last_begin_time_;\
std::vector<double> event_4_samples_;\
base::TimeTicks event_4_last_begin_time_;\
std::vector<double> event_5_samples_;\
base::TimeTicks event_5_last_begin_time_;\
std::vector<double> event_6_samples_;\
base::TimeTicks event_6_last_begin_time_;\
};\
\
TRACE_EVENT_REGISTER_BENCHMARK(benchmark)\
\
void benchmark::Experiment()\
MSVC_POP_WARNING()
#define TRACE_EVENT_BENCHMARK7(benchmark, event_name_1, measurement_type_1, \
event_name_2, measurement_type_2, event_name_3, measurement_type_3, \
event_name_4, measurement_type_4, event_name_5, measurement_type_5, \
event_name_6, measurement_type_6, event_name_7, measurement_type_7)\
MSVC_PUSH_DISABLE_WARNING(6326)\
class benchmark : public cobalt::trace_event::Benchmark {\
public:\
void Experiment() override;\
void AnalyzeTraceEvent(\
const scoped_refptr<cobalt::trace_event::EventParser::ScopedEvent>& \
event)\
override {\
if (event->name() == event_name_1) {\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_1_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_1_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_1_last_begin_time_.is_null()) {\
event_1_samples_.push_back(\
(event->begin_event().timestamp() -\
event_1_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_1_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_2) {\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_2_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_2_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_2_last_begin_time_.is_null()) {\
event_2_samples_.push_back(\
(event->begin_event().timestamp() -\
event_2_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_2_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_3) {\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_3_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_3_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_3_last_begin_time_.is_null()) {\
event_3_samples_.push_back(\
(event->begin_event().timestamp() -\
event_3_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_3_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_4) {\
switch (measurement_type_4) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_4_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_4_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_4_last_begin_time_.is_null()) {\
event_4_samples_.push_back(\
(event->begin_event().timestamp() -\
event_4_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_4_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_5) {\
switch (measurement_type_5) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_5_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_5_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_5_last_begin_time_.is_null()) {\
event_5_samples_.push_back(\
(event->begin_event().timestamp() -\
event_5_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_5_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_6) {\
switch (measurement_type_6) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_6_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_6_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_6_last_begin_time_.is_null()) {\
event_6_samples_.push_back(\
(event->begin_event().timestamp() -\
event_6_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_6_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_7) {\
switch (measurement_type_7) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_7_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_7_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_7_last_begin_time_.is_null()) {\
event_7_samples_.push_back(\
(event->begin_event().timestamp() -\
event_7_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_7_last_begin_time_ = event->begin_event().timestamp();\
}\
}\
std::vector<Result> CompileResults() override {\
std::vector<Result> results;\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" flow duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" in-scope duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_1) +\
" time between event starts in seconds", \
event_1_samples_));\
} break;\
}\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" flow duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" in-scope duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_2) +\
" time between event starts in seconds", \
event_2_samples_));\
} break;\
}\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" flow duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" in-scope duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_3) +\
" time between event starts in seconds", \
event_3_samples_));\
} break;\
}\
switch (measurement_type_4) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_4) +\
" flow duration in seconds", \
event_4_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_4) +\
" in-scope duration in seconds", \
event_4_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_4) +\
" time between event starts in seconds", \
event_4_samples_));\
} break;\
}\
switch (measurement_type_5) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_5) +\
" flow duration in seconds", \
event_5_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_5) +\
" in-scope duration in seconds", \
event_5_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_5) +\
" time between event starts in seconds", \
event_5_samples_));\
} break;\
}\
switch (measurement_type_6) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_6) +\
" flow duration in seconds", \
event_6_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_6) +\
" in-scope duration in seconds", \
event_6_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_6) +\
" time between event starts in seconds", \
event_6_samples_));\
} break;\
}\
switch (measurement_type_7) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_7) +\
" flow duration in seconds", \
event_7_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_7) +\
" in-scope duration in seconds", \
event_7_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_7) +\
" time between event starts in seconds", \
event_7_samples_));\
} break;\
}\
return results;\
}\
private:\
std::vector<double> event_1_samples_;\
base::TimeTicks event_1_last_begin_time_;\
std::vector<double> event_2_samples_;\
base::TimeTicks event_2_last_begin_time_;\
std::vector<double> event_3_samples_;\
base::TimeTicks event_3_last_begin_time_;\
std::vector<double> event_4_samples_;\
base::TimeTicks event_4_last_begin_time_;\
std::vector<double> event_5_samples_;\
base::TimeTicks event_5_last_begin_time_;\
std::vector<double> event_6_samples_;\
base::TimeTicks event_6_last_begin_time_;\
std::vector<double> event_7_samples_;\
base::TimeTicks event_7_last_begin_time_;\
};\
\
TRACE_EVENT_REGISTER_BENCHMARK(benchmark)\
\
void benchmark::Experiment()\
MSVC_POP_WARNING()
#define TRACE_EVENT_BENCHMARK8(benchmark, event_name_1, measurement_type_1, \
event_name_2, measurement_type_2, event_name_3, measurement_type_3, \
event_name_4, measurement_type_4, event_name_5, measurement_type_5, \
event_name_6, measurement_type_6, event_name_7, measurement_type_7, \
event_name_8, measurement_type_8)\
MSVC_PUSH_DISABLE_WARNING(6326)\
class benchmark : public cobalt::trace_event::Benchmark {\
public:\
void Experiment() override;\
void AnalyzeTraceEvent(\
const scoped_refptr<cobalt::trace_event::EventParser::ScopedEvent>& \
event)\
override {\
if (event->name() == event_name_1) {\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_1_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_1_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_1_last_begin_time_.is_null()) {\
event_1_samples_.push_back(\
(event->begin_event().timestamp() -\
event_1_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_1_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_2) {\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_2_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_2_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_2_last_begin_time_.is_null()) {\
event_2_samples_.push_back(\
(event->begin_event().timestamp() -\
event_2_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_2_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_3) {\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_3_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_3_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_3_last_begin_time_.is_null()) {\
event_3_samples_.push_back(\
(event->begin_event().timestamp() -\
event_3_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_3_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_4) {\
switch (measurement_type_4) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_4_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_4_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_4_last_begin_time_.is_null()) {\
event_4_samples_.push_back(\
(event->begin_event().timestamp() -\
event_4_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_4_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_5) {\
switch (measurement_type_5) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_5_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_5_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_5_last_begin_time_.is_null()) {\
event_5_samples_.push_back(\
(event->begin_event().timestamp() -\
event_5_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_5_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_6) {\
switch (measurement_type_6) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_6_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_6_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_6_last_begin_time_.is_null()) {\
event_6_samples_.push_back(\
(event->begin_event().timestamp() -\
event_6_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_6_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_7) {\
switch (measurement_type_7) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_7_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_7_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_7_last_begin_time_.is_null()) {\
event_7_samples_.push_back(\
(event->begin_event().timestamp() -\
event_7_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_7_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_8) {\
switch (measurement_type_8) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_8_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_8_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_8_last_begin_time_.is_null()) {\
event_8_samples_.push_back(\
(event->begin_event().timestamp() -\
event_8_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_8_last_begin_time_ = event->begin_event().timestamp();\
}\
}\
std::vector<Result> CompileResults() override {\
std::vector<Result> results;\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" flow duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" in-scope duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_1) +\
" time between event starts in seconds", \
event_1_samples_));\
} break;\
}\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" flow duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" in-scope duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_2) +\
" time between event starts in seconds", \
event_2_samples_));\
} break;\
}\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" flow duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" in-scope duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_3) +\
" time between event starts in seconds", \
event_3_samples_));\
} break;\
}\
switch (measurement_type_4) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_4) +\
" flow duration in seconds", \
event_4_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_4) +\
" in-scope duration in seconds", \
event_4_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_4) +\
" time between event starts in seconds", \
event_4_samples_));\
} break;\
}\
switch (measurement_type_5) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_5) +\
" flow duration in seconds", \
event_5_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_5) +\
" in-scope duration in seconds", \
event_5_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_5) +\
" time between event starts in seconds", \
event_5_samples_));\
} break;\
}\
switch (measurement_type_6) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_6) +\
" flow duration in seconds", \
event_6_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_6) +\
" in-scope duration in seconds", \
event_6_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_6) +\
" time between event starts in seconds", \
event_6_samples_));\
} break;\
}\
switch (measurement_type_7) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_7) +\
" flow duration in seconds", \
event_7_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_7) +\
" in-scope duration in seconds", \
event_7_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_7) +\
" time between event starts in seconds", \
event_7_samples_));\
} break;\
}\
switch (measurement_type_8) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_8) +\
" flow duration in seconds", \
event_8_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_8) +\
" in-scope duration in seconds", \
event_8_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_8) +\
" time between event starts in seconds", \
event_8_samples_));\
} break;\
}\
return results;\
}\
private:\
std::vector<double> event_1_samples_;\
base::TimeTicks event_1_last_begin_time_;\
std::vector<double> event_2_samples_;\
base::TimeTicks event_2_last_begin_time_;\
std::vector<double> event_3_samples_;\
base::TimeTicks event_3_last_begin_time_;\
std::vector<double> event_4_samples_;\
base::TimeTicks event_4_last_begin_time_;\
std::vector<double> event_5_samples_;\
base::TimeTicks event_5_last_begin_time_;\
std::vector<double> event_6_samples_;\
base::TimeTicks event_6_last_begin_time_;\
std::vector<double> event_7_samples_;\
base::TimeTicks event_7_last_begin_time_;\
std::vector<double> event_8_samples_;\
base::TimeTicks event_8_last_begin_time_;\
};\
\
TRACE_EVENT_REGISTER_BENCHMARK(benchmark)\
\
void benchmark::Experiment()\
MSVC_POP_WARNING()
#define TRACE_EVENT_BENCHMARK9(benchmark, event_name_1, measurement_type_1, \
event_name_2, measurement_type_2, event_name_3, measurement_type_3, \
event_name_4, measurement_type_4, event_name_5, measurement_type_5, \
event_name_6, measurement_type_6, event_name_7, measurement_type_7, \
event_name_8, measurement_type_8, event_name_9, measurement_type_9)\
MSVC_PUSH_DISABLE_WARNING(6326)\
class benchmark : public cobalt::trace_event::Benchmark {\
public:\
void Experiment() override;\
void AnalyzeTraceEvent(\
const scoped_refptr<cobalt::trace_event::EventParser::ScopedEvent>& \
event)\
override {\
if (event->name() == event_name_1) {\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_1_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_1_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_1_last_begin_time_.is_null()) {\
event_1_samples_.push_back(\
(event->begin_event().timestamp() -\
event_1_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_1_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_2) {\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_2_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_2_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_2_last_begin_time_.is_null()) {\
event_2_samples_.push_back(\
(event->begin_event().timestamp() -\
event_2_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_2_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_3) {\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_3_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_3_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_3_last_begin_time_.is_null()) {\
event_3_samples_.push_back(\
(event->begin_event().timestamp() -\
event_3_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_3_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_4) {\
switch (measurement_type_4) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_4_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_4_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_4_last_begin_time_.is_null()) {\
event_4_samples_.push_back(\
(event->begin_event().timestamp() -\
event_4_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_4_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_5) {\
switch (measurement_type_5) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_5_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_5_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_5_last_begin_time_.is_null()) {\
event_5_samples_.push_back(\
(event->begin_event().timestamp() -\
event_5_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_5_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_6) {\
switch (measurement_type_6) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_6_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_6_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_6_last_begin_time_.is_null()) {\
event_6_samples_.push_back(\
(event->begin_event().timestamp() -\
event_6_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_6_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_7) {\
switch (measurement_type_7) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_7_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_7_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_7_last_begin_time_.is_null()) {\
event_7_samples_.push_back(\
(event->begin_event().timestamp() -\
event_7_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_7_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_8) {\
switch (measurement_type_8) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_8_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_8_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_8_last_begin_time_.is_null()) {\
event_8_samples_.push_back(\
(event->begin_event().timestamp() -\
event_8_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_8_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_9) {\
switch (measurement_type_9) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_9_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_9_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_9_last_begin_time_.is_null()) {\
event_9_samples_.push_back(\
(event->begin_event().timestamp() -\
event_9_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_9_last_begin_time_ = event->begin_event().timestamp();\
}\
}\
std::vector<Result> CompileResults() override {\
std::vector<Result> results;\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" flow duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" in-scope duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_1) +\
" time between event starts in seconds", \
event_1_samples_));\
} break;\
}\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" flow duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" in-scope duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_2) +\
" time between event starts in seconds", \
event_2_samples_));\
} break;\
}\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" flow duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" in-scope duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_3) +\
" time between event starts in seconds", \
event_3_samples_));\
} break;\
}\
switch (measurement_type_4) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_4) +\
" flow duration in seconds", \
event_4_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_4) +\
" in-scope duration in seconds", \
event_4_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_4) +\
" time between event starts in seconds", \
event_4_samples_));\
} break;\
}\
switch (measurement_type_5) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_5) +\
" flow duration in seconds", \
event_5_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_5) +\
" in-scope duration in seconds", \
event_5_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_5) +\
" time between event starts in seconds", \
event_5_samples_));\
} break;\
}\
switch (measurement_type_6) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_6) +\
" flow duration in seconds", \
event_6_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_6) +\
" in-scope duration in seconds", \
event_6_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_6) +\
" time between event starts in seconds", \
event_6_samples_));\
} break;\
}\
switch (measurement_type_7) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_7) +\
" flow duration in seconds", \
event_7_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_7) +\
" in-scope duration in seconds", \
event_7_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_7) +\
" time between event starts in seconds", \
event_7_samples_));\
} break;\
}\
switch (measurement_type_8) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_8) +\
" flow duration in seconds", \
event_8_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_8) +\
" in-scope duration in seconds", \
event_8_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_8) +\
" time between event starts in seconds", \
event_8_samples_));\
} break;\
}\
switch (measurement_type_9) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_9) +\
" flow duration in seconds", \
event_9_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_9) +\
" in-scope duration in seconds", \
event_9_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_9) +\
" time between event starts in seconds", \
event_9_samples_));\
} break;\
}\
return results;\
}\
private:\
std::vector<double> event_1_samples_;\
base::TimeTicks event_1_last_begin_time_;\
std::vector<double> event_2_samples_;\
base::TimeTicks event_2_last_begin_time_;\
std::vector<double> event_3_samples_;\
base::TimeTicks event_3_last_begin_time_;\
std::vector<double> event_4_samples_;\
base::TimeTicks event_4_last_begin_time_;\
std::vector<double> event_5_samples_;\
base::TimeTicks event_5_last_begin_time_;\
std::vector<double> event_6_samples_;\
base::TimeTicks event_6_last_begin_time_;\
std::vector<double> event_7_samples_;\
base::TimeTicks event_7_last_begin_time_;\
std::vector<double> event_8_samples_;\
base::TimeTicks event_8_last_begin_time_;\
std::vector<double> event_9_samples_;\
base::TimeTicks event_9_last_begin_time_;\
};\
\
TRACE_EVENT_REGISTER_BENCHMARK(benchmark)\
\
void benchmark::Experiment()\
MSVC_POP_WARNING()
#define TRACE_EVENT_BENCHMARK10(benchmark, event_name_1, measurement_type_1, \
event_name_2, measurement_type_2, event_name_3, measurement_type_3, \
event_name_4, measurement_type_4, event_name_5, measurement_type_5, \
event_name_6, measurement_type_6, event_name_7, measurement_type_7, \
event_name_8, measurement_type_8, event_name_9, measurement_type_9, \
event_name_10, measurement_type_10)\
MSVC_PUSH_DISABLE_WARNING(6326)\
class benchmark : public cobalt::trace_event::Benchmark {\
public:\
void Experiment() override;\
void AnalyzeTraceEvent(\
const scoped_refptr<cobalt::trace_event::EventParser::ScopedEvent>& \
event)\
override {\
if (event->name() == event_name_1) {\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_1_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_1_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_1_last_begin_time_.is_null()) {\
event_1_samples_.push_back(\
(event->begin_event().timestamp() -\
event_1_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_1_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_2) {\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_2_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_2_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_2_last_begin_time_.is_null()) {\
event_2_samples_.push_back(\
(event->begin_event().timestamp() -\
event_2_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_2_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_3) {\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_3_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_3_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_3_last_begin_time_.is_null()) {\
event_3_samples_.push_back(\
(event->begin_event().timestamp() -\
event_3_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_3_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_4) {\
switch (measurement_type_4) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_4_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_4_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_4_last_begin_time_.is_null()) {\
event_4_samples_.push_back(\
(event->begin_event().timestamp() -\
event_4_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_4_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_5) {\
switch (measurement_type_5) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_5_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_5_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_5_last_begin_time_.is_null()) {\
event_5_samples_.push_back(\
(event->begin_event().timestamp() -\
event_5_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_5_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_6) {\
switch (measurement_type_6) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_6_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_6_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_6_last_begin_time_.is_null()) {\
event_6_samples_.push_back(\
(event->begin_event().timestamp() -\
event_6_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_6_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_7) {\
switch (measurement_type_7) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_7_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_7_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_7_last_begin_time_.is_null()) {\
event_7_samples_.push_back(\
(event->begin_event().timestamp() -\
event_7_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_7_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_8) {\
switch (measurement_type_8) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_8_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_8_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_8_last_begin_time_.is_null()) {\
event_8_samples_.push_back(\
(event->begin_event().timestamp() -\
event_8_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_8_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_9) {\
switch (measurement_type_9) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_9_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_9_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_9_last_begin_time_.is_null()) {\
event_9_samples_.push_back(\
(event->begin_event().timestamp() -\
event_9_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_9_last_begin_time_ = event->begin_event().timestamp();\
}\
if (event->name() == event_name_10) {\
switch (measurement_type_10) {\
case cobalt::trace_event::FLOW_DURATION: {\
if (event->flow_duration()) {\
event_10_samples_.push_back(\
event->flow_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
if (event->in_scope_duration()) {\
event_10_samples_.push_back(\
event->in_scope_duration()->InSecondsF());\
}\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
if (!event_10_last_begin_time_.is_null()) {\
event_10_samples_.push_back(\
(event->begin_event().timestamp() -\
event_10_last_begin_time_).InSecondsF());\
}\
} break;\
}\
\
event_10_last_begin_time_ = event->begin_event().timestamp();\
}\
}\
std::vector<Result> CompileResults() override {\
std::vector<Result> results;\
switch (measurement_type_1) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" flow duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_1) +\
" in-scope duration in seconds", \
event_1_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_1) +\
" time between event starts in seconds", \
event_1_samples_));\
} break;\
}\
switch (measurement_type_2) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" flow duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_2) +\
" in-scope duration in seconds", \
event_2_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_2) +\
" time between event starts in seconds", \
event_2_samples_));\
} break;\
}\
switch (measurement_type_3) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" flow duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_3) +\
" in-scope duration in seconds", \
event_3_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_3) +\
" time between event starts in seconds", \
event_3_samples_));\
} break;\
}\
switch (measurement_type_4) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_4) +\
" flow duration in seconds", \
event_4_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_4) +\
" in-scope duration in seconds", \
event_4_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_4) +\
" time between event starts in seconds", \
event_4_samples_));\
} break;\
}\
switch (measurement_type_5) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_5) +\
" flow duration in seconds", \
event_5_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_5) +\
" in-scope duration in seconds", \
event_5_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_5) +\
" time between event starts in seconds", \
event_5_samples_));\
} break;\
}\
switch (measurement_type_6) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_6) +\
" flow duration in seconds", \
event_6_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_6) +\
" in-scope duration in seconds", \
event_6_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_6) +\
" time between event starts in seconds", \
event_6_samples_));\
} break;\
}\
switch (measurement_type_7) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_7) +\
" flow duration in seconds", \
event_7_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_7) +\
" in-scope duration in seconds", \
event_7_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_7) +\
" time between event starts in seconds", \
event_7_samples_));\
} break;\
}\
switch (measurement_type_8) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_8) +\
" flow duration in seconds", \
event_8_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_8) +\
" in-scope duration in seconds", \
event_8_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_8) +\
" time between event starts in seconds", \
event_8_samples_));\
} break;\
}\
switch (measurement_type_9) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_9) +\
" flow duration in seconds", \
event_9_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_9) +\
" in-scope duration in seconds", \
event_9_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_9) +\
" time between event starts in seconds", \
event_9_samples_));\
} break;\
}\
switch (measurement_type_10) {\
case cobalt::trace_event::FLOW_DURATION: {\
results.push_back(\
Result(std::string(event_name_10) +\
" flow duration in seconds", \
event_10_samples_));\
} break;\
case cobalt::trace_event::IN_SCOPE_DURATION: {\
results.push_back(\
Result(std::string(event_name_10) +\
" in-scope duration in seconds", \
event_10_samples_));\
} break;\
case cobalt::trace_event::TIME_BETWEEN_EVENT_STARTS: {\
results.push_back(\
Result(std::string(event_name_10) +\
" time between event starts in seconds", \
event_10_samples_));\
} break;\
}\
return results;\
}\
private:\
std::vector<double> event_1_samples_;\
base::TimeTicks event_1_last_begin_time_;\
std::vector<double> event_2_samples_;\
base::TimeTicks event_2_last_begin_time_;\
std::vector<double> event_3_samples_;\
base::TimeTicks event_3_last_begin_time_;\
std::vector<double> event_4_samples_;\
base::TimeTicks event_4_last_begin_time_;\
std::vector<double> event_5_samples_;\
base::TimeTicks event_5_last_begin_time_;\
std::vector<double> event_6_samples_;\
base::TimeTicks event_6_last_begin_time_;\
std::vector<double> event_7_samples_;\
base::TimeTicks event_7_last_begin_time_;\
std::vector<double> event_8_samples_;\
base::TimeTicks event_8_last_begin_time_;\
std::vector<double> event_9_samples_;\
base::TimeTicks event_9_last_begin_time_;\
std::vector<double> event_10_samples_;\
base::TimeTicks event_10_last_begin_time_;\
};\
\
TRACE_EVENT_REGISTER_BENCHMARK(benchmark)\
\
void benchmark::Experiment()\
MSVC_POP_WARNING()
// clang-format on