mirror of
https://github.com/troldal/OpenXLSX.git
synced 2025-05-09 10:21:11 +08:00
83 lines
2.1 KiB
C++
83 lines
2.1 KiB
C++
//
|
|
// Created by Kenneth Balslev on 19/06/2020.
|
|
//
|
|
|
|
#include <benchmark/benchmark.h>
|
|
#include <OpenXLSX.hpp>
|
|
|
|
using namespace OpenXLSX;
|
|
|
|
/**
|
|
* @brief
|
|
* @param state
|
|
*/
|
|
static void BM_WriteMatrix(benchmark::State& state) {
|
|
XLDocument doc;
|
|
doc.CreateDocument("./benchmark.xlsx");
|
|
auto wks = doc.Workbook().Worksheet("Sheet1");
|
|
auto arange = wks.Range(XLCellReference("A1"), XLCellReference(state.range(0), state.range(0)));
|
|
|
|
for (auto _ : state) {
|
|
for (auto iter : arange) {
|
|
iter.Value().Set(3.1415);
|
|
}
|
|
}
|
|
|
|
state.SetItemsProcessed(state.range(0) * state.range(0));
|
|
state.counters["items"] = state.items_processed();
|
|
|
|
doc.SaveDocument();
|
|
doc.CloseDocument();
|
|
}
|
|
|
|
BENCHMARK(BM_WriteMatrix)->RangeMultiplier(2)->Range(8, 8 << 9)->Unit(benchmark::kMillisecond);
|
|
|
|
/**
|
|
* @brief
|
|
* @param state
|
|
*/
|
|
static void BM_WriteColumns(benchmark::State& state) {
|
|
XLDocument doc;
|
|
doc.CreateDocument("./benchmark.xlsx");
|
|
auto wks = doc.Workbook().Worksheet("Sheet1");
|
|
auto arange = wks.Range(XLCellReference("A1"), XLCellReference(1048575, state.range(0)));
|
|
|
|
for (auto _ : state) {
|
|
for (auto iter : arange) {
|
|
iter.Value().Set(3.1415);
|
|
}
|
|
}
|
|
|
|
state.SetItemsProcessed(1048576 * state.range(0));
|
|
state.counters["items"] = state.items_processed();
|
|
|
|
doc.SaveDocument();
|
|
doc.CloseDocument();
|
|
}
|
|
|
|
BENCHMARK(BM_WriteColumns)->RangeMultiplier(2)->Range(1, 1 << 4)->Unit(benchmark::kMillisecond);
|
|
|
|
/**
|
|
* @brief
|
|
* @param state
|
|
*/
|
|
static void BM_WriteRows(benchmark::State& state) {
|
|
XLDocument doc;
|
|
doc.CreateDocument("./benchmark.xlsx");
|
|
auto wks = doc.Workbook().Worksheet("Sheet1");
|
|
auto arange = wks.Range(XLCellReference("A1"), XLCellReference(state.range(0), 16383));
|
|
|
|
for (auto _ : state) {
|
|
for (auto iter : arange) {
|
|
iter.Value().Set(3.1415);
|
|
}
|
|
}
|
|
|
|
state.SetItemsProcessed(16384 * state.range(0));
|
|
state.counters["items"] = state.items_processed();
|
|
|
|
doc.SaveDocument();
|
|
doc.CloseDocument();
|
|
}
|
|
|
|
BENCHMARK(BM_WriteRows)->RangeMultiplier(2)->Range(8, 8 << 7)->Unit(benchmark::kMillisecond); |