本文整理汇总了C++中benchmark::State::SetBytesProcessed方法的典型用法代码示例。如果您正苦于以下问题:C++ State::SetBytesProcessed方法的具体用法?C++ State::SetBytesProcessed怎么用?C++ State::SetBytesProcessed使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类benchmark::State
的用法示例。
在下文中一共展示了State::SetBytesProcessed方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SetUp
BENCHMARK_DEFINE_F(dynamic_default_fixture, single_thread)(benchmark::State& state) {
if (state.thread_index == 0) {
SetUp(state);
}
sqeazy::remove_estimated_background_scheme<std::uint16_t> local;
local.set_n_threads(1);
local.encode(sinus_.data(),
output_.data(),
shape_);
while (state.KeepRunning()) {
state.PauseTiming();
std::fill(output_.begin(), output_.end(),0);
state.ResumeTiming();
local.encode(sinus_.data(),
output_.data(),
shape_);
}
state.SetBytesProcessed(int64_t(state.iterations()) *
int64_t(size_)*sizeof(sinus_.front()));
}
示例2: SetUp
BENCHMARK_DEFINE_F(dynamic_default_fixture, max_threads)(benchmark::State& state) {
if (state.thread_index == 0) {
SetUp(state);
}
int nthreads = std::thread::hardware_concurrency();
sqeazy::frame_shuffle_scheme<std::uint16_t> local;
local.set_n_threads(nthreads);
local.encode(sinus_.data(),
output_.data(),
shape_);
while (state.KeepRunning()) {
state.PauseTiming();
std::fill(output_.begin(), output_.end(),0);
state.ResumeTiming();
local.encode(sinus_.data(),
output_.data(),
shape_);
}
state.SetBytesProcessed(int64_t(state.iterations()) *
int64_t(size_)*sizeof(sinus_.front()));
}
示例3: buf
static inline void BM_DeflateDecompressor(benchmark::State& state) {
static_assert(BPS::value > 0, "bad bps");
static_assert(rawspeed::isAligned(BPS::value, 8), "not byte count");
const auto dim = areaToRectangle(state.range(0));
auto mRaw = rawspeed::RawImage::create(dim, rawspeed::TYPE_FLOAT32, 1);
uLong cBufSize;
auto cBuf = compressChunk<BPS>(mRaw, &cBufSize);
assert(cBuf != nullptr);
assert(cBufSize > 0);
Buffer buf(std::move(cBuf), cBufSize);
assert(buf.getSize() == cBufSize);
int predictor = 0;
switch (Pf::value) {
case 0:
predictor = 0;
break;
case 1:
predictor = 3;
break;
case 2:
predictor = 34894;
break;
case 4:
predictor = 34895;
break;
default:
__builtin_unreachable();
break;
}
std::unique_ptr<unsigned char[]> uBuffer;
const rawspeed::ByteStream bs(buf, 0, buf.getSize());
while (state.KeepRunning()) {
DeflateDecompressor d(bs, mRaw, predictor, BPS::value);
d.decode(&uBuffer, mRaw->dim.x, mRaw->dim.y, 0, 0);
}
state.SetComplexityN(dim.area());
state.SetItemsProcessed(state.complexity_length_n() * state.iterations());
state.SetBytesProcessed(BPS::value * state.items_processed() / 8);
}
示例4: AtriaSequence
void AtriaSequence(benchmark::State& state) {
using namespace atria::xform;
using namespace atria::prelude;
auto seq = sequence(range(1, ITERATION_COUNT));
while (state.KeepRunning()) {
run(
comp(
map([](auto j){ return ADD_VALUE(j); }),
filter([](auto k){ return FILTER_VALUE(k); }),
sink([](auto m){ doNotOptimize(m); })
),
seq);
}
state.SetItemsProcessed(ITERATION_COUNT * state.iterations());
state.SetBytesProcessed(ITERATION_COUNT * state.iterations() * sizeof(ELEMENT_TYPE));
}
示例5: BM_Connection_Unidirectional
void BM_Connection_Unidirectional(benchmark::State& state) {
int fds[2];
if (adb_socketpair(fds) != 0) {
LOG(FATAL) << "failed to create socketpair";
}
auto client = MakeConnection<ConnectionType>(unique_fd(fds[0]));
auto server = MakeConnection<ConnectionType>(unique_fd(fds[1]));
std::atomic<size_t> received_bytes;
client->SetReadCallback([](Connection*, std::unique_ptr<apacket>) -> bool { return true; });
server->SetReadCallback([&received_bytes](Connection*, std::unique_ptr<apacket> packet) -> bool {
received_bytes += packet->payload.size();
return true;
});
client->SetErrorCallback(
[](Connection*, const std::string& error) { LOG(INFO) << "client closed: " << error; });
server->SetErrorCallback(
[](Connection*, const std::string& error) { LOG(INFO) << "server closed: " << error; });
client->Start();
server->Start();
for (auto _ : state) {
size_t data_size = state.range(0);
std::unique_ptr<apacket> packet = std::make_unique<apacket>();
memset(&packet->msg, 0, sizeof(packet->msg));
packet->msg.command = A_WRTE;
packet->msg.data_length = data_size;
packet->payload.resize(data_size);
memset(&packet->payload[0], 0xff, data_size);
received_bytes = 0;
client->Write(std::move(packet));
while (received_bytes < data_size) {
continue;
}
}
state.SetBytesProcessed(static_cast<int64_t>(state.iterations()) * state.range(0));
client->Stop();
server->Stop();
}
示例6: AtriaEnumerate
void AtriaEnumerate(benchmark::State& state) {
using namespace atria::xform;
using namespace atria::prelude;
auto input = comp(enumerate_from(1), take(ITERATION_COUNT));
while (state.KeepRunning()) {
run(
comp(
input,
map([](auto j){ return ADD_VALUE(j); }),
filter([](auto k){ return FILTER_VALUE(k); }),
sink([](auto m){ doNotOptimize(m); })
)
);
}
state.SetItemsProcessed(ITERATION_COUNT * state.iterations());
state.SetBytesProcessed(ITERATION_COUNT * state.iterations() * sizeof(ELEMENT_TYPE));
}
示例7: ReadWriteTest
void ReadWriteTest(benchmark::State& state, Fn f, bool buffered) {
size_t chunk_size = state.range_x();
FILE* fp = fopen("/dev/zero", "rw");
__fsetlocking(fp, FSETLOCKING_BYCALLER);
char* buf = new char[chunk_size];
if (!buffered) {
setvbuf(fp, 0, _IONBF, 0);
}
while (state.KeepRunning()) {
f(buf, chunk_size, 1, fp);
}
state.SetBytesProcessed(int64_t(state.iterations()) * int64_t(chunk_size));
delete[] buf;
fclose(fp);
}
示例8: SetUp
BENCHMARK_DEFINE_F(uint16_fixture, stack_fill_histogram_uint16)(benchmark::State& state) {
if (state.thread_index == 0) {
SetUp(state);
}
auto dh = sqeazy::detail::serial_fill_histogram(sinus_.cbegin(), sinus_.cend());
while (state.KeepRunning()) {
state.PauseTiming();
std::fill(dh.begin(),dh.end(),0);
state.ResumeTiming();
dh = sqeazy::detail::serial_fill_histogram(sinus_.cbegin(), sinus_.cend());
}
state.SetBytesProcessed(int64_t(state.iterations()) *
int64_t(size_)*sizeof(sinus_.front()));
}
示例9: while
BENCHMARK_DEFINE_F(static_default_fixture, one_thread)(benchmark::State& state) {
sqeazy::remove_estimated_background_scheme<std::uint16_t> local;
local.set_n_threads(state.threads);
local.encode(sin_data.data(),
output_data.data(),
shape);
while (state.KeepRunning()) {
state.PauseTiming();
std::fill(output_data.begin(), output_data.end(),0);
state.ResumeTiming();
local.encode(sin_data.data(),
output_data.data(),
shape);
}
state.SetBytesProcessed(int64_t(state.iterations()) *
int64_t(sin_data.size())*sizeof(sin_data.front()));
}
示例10: dh
BENCHMARK_DEFINE_F(uint16_fixture, heap_fill_histogram_uint16)(benchmark::State& state) {
if (state.thread_index == 0) {
SetUp(state);
}
typedef std::vector<std::uint32_t> container_t;
static const std::size_t hlen = (1 << (sizeof(std::uint16_t)*CHAR_BIT));
container_t dh(hlen,0);
sqeazy::detail::serial_fill_histogram_byref(sinus_.cbegin(), sinus_.cend(),dh.begin());
while (state.KeepRunning()) {
state.PauseTiming();
std::fill(dh.begin(),dh.end(),0);
state.ResumeTiming();
sqeazy::detail::serial_fill_histogram_byref(sinus_.cbegin(), sinus_.cend(),dh.begin());
}
state.SetBytesProcessed(int64_t(state.iterations()) *
int64_t(size_)*sizeof(sinus_.front()));
}
示例11: BM_Connection_Echo
void BM_Connection_Echo(benchmark::State& state) {
int fds[2];
if (adb_socketpair(fds) != 0) {
LOG(FATAL) << "failed to create socketpair";
}
auto client = MakeConnection<ConnectionType>(unique_fd(fds[0]));
auto server = MakeConnection<ConnectionType>(unique_fd(fds[1]));
std::atomic<size_t> received_bytes;
fdevent_reset();
std::thread fdevent_thread([]() { fdevent_loop(); });
client->SetReadCallback([&received_bytes](Connection*, std::unique_ptr<apacket> packet) -> bool {
received_bytes += packet->payload.size();
return true;
});
static const auto handle_packet = [](Connection* connection, std::unique_ptr<apacket> packet) {
connection->Write(std::move(packet));
};
server->SetReadCallback([](Connection* connection, std::unique_ptr<apacket> packet) -> bool {
if (Policy == ThreadPolicy::MainThread) {
auto raw_packet = packet.release();
fdevent_run_on_main_thread([connection, raw_packet]() {
std::unique_ptr<apacket> packet(raw_packet);
handle_packet(connection, std::move(packet));
});
} else {
handle_packet(connection, std::move(packet));
}
return true;
});
client->SetErrorCallback(
[](Connection*, const std::string& error) { LOG(INFO) << "client closed: " << error; });
server->SetErrorCallback(
[](Connection*, const std::string& error) { LOG(INFO) << "server closed: " << error; });
client->Start();
server->Start();
for (auto _ : state) {
size_t data_size = state.range(0);
std::unique_ptr<apacket> packet = std::make_unique<apacket>();
memset(&packet->msg, 0, sizeof(packet->msg));
packet->msg.command = A_WRTE;
packet->msg.data_length = data_size;
packet->payload.resize(data_size);
memset(&packet->payload[0], 0xff, data_size);
received_bytes = 0;
client->Write(std::move(packet));
while (received_bytes < data_size) {
continue;
}
}
state.SetBytesProcessed(static_cast<int64_t>(state.iterations()) * state.range(0));
client->Stop();
server->Stop();
// TODO: Make it so that you don't need to poke the fdevent loop to make it terminate?
fdevent_terminate_loop();
fdevent_run_on_main_thread([]() {});
fdevent_thread.join();
}