summaryrefslogtreecommitdiffstats
path: root/third_party/jpeg-xl/lib/jxl/splines_gbench.cc
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/jpeg-xl/lib/jxl/splines_gbench.cc')
-rw-r--r--third_party/jpeg-xl/lib/jxl/splines_gbench.cc52
1 files changed, 52 insertions, 0 deletions
diff --git a/third_party/jpeg-xl/lib/jxl/splines_gbench.cc b/third_party/jpeg-xl/lib/jxl/splines_gbench.cc
new file mode 100644
index 0000000000..78ff6d41c0
--- /dev/null
+++ b/third_party/jpeg-xl/lib/jxl/splines_gbench.cc
@@ -0,0 +1,52 @@
+// Copyright (c) the JPEG XL Project Authors. All rights reserved.
+//
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#include "benchmark/benchmark.h"
+#include "lib/jxl/splines.h"
+
+namespace jxl {
+namespace {
+
+constexpr int kQuantizationAdjustment = 0;
+const ColorCorrelationMap* const cmap = new ColorCorrelationMap;
+const float kYToX = cmap->YtoXRatio(0);
+const float kYToB = cmap->YtoBRatio(0);
+
+void BM_Splines(benchmark::State& state) {
+ const size_t n = state.range();
+
+ std::vector<Spline> spline_data = {
+ {/*control_points=*/{
+ {9, 54}, {118, 159}, {97, 3}, {10, 40}, {150, 25}, {120, 300}},
+ /*color_dct=*/
+ {{0.03125f, 0.00625f, 0.003125f}, {1.f, 0.321875f}, {1.f, 0.24375f}},
+ /*sigma_dct=*/{0.3125f, 0.f, 0.f, 0.0625f}}};
+ std::vector<QuantizedSpline> quantized_splines;
+ std::vector<Spline::Point> starting_points;
+ for (const Spline& spline : spline_data) {
+ quantized_splines.emplace_back(spline, kQuantizationAdjustment, kYToX,
+ kYToB);
+ starting_points.push_back(spline.control_points.front());
+ }
+ Splines splines(kQuantizationAdjustment, std::move(quantized_splines),
+ std::move(starting_points));
+
+ Image3F drawing_area(320, 320);
+ ZeroFillImage(&drawing_area);
+ for (auto _ : state) {
+ for (size_t i = 0; i < n; ++i) {
+ JXL_CHECK(splines.InitializeDrawCache(drawing_area.xsize(),
+ drawing_area.ysize(), *cmap));
+ splines.AddTo(&drawing_area, Rect(drawing_area), Rect(drawing_area));
+ }
+ }
+
+ state.SetItemsProcessed(n * state.iterations());
+}
+
+BENCHMARK(BM_Splines)->Range(1, 1 << 10);
+
+} // namespace
+} // namespace jxl