// // Created by Kenneth Balslev on 19/06/2020. // #include #include 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);