Skip to content

Commit 20fc5cc

Browse files
Koladata Teamcopybara-github
authored andcommitted
add benchmarks for deep_clone
PiperOrigin-RevId: 856181788 Change-Id: I5d91d4fa88462c8d93fd493ecf4f5381f20a6833
1 parent d0efce9 commit 20fc5cc

File tree

2 files changed

+84
-0
lines changed

2 files changed

+84
-0
lines changed

koladata/internal/op_utils/BUILD

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,7 @@ cc_test(
395395
srcs = ["deep_clone_test.cc"],
396396
deps = [
397397
":deep_clone",
398+
":presence_and",
398399
"//koladata:test_utils",
399400
"//koladata/internal:data_bag",
400401
"//koladata/internal:data_item",
@@ -405,8 +406,10 @@ cc_test(
405406
"//koladata/internal:uuid_object",
406407
"//koladata/internal/testing:deep_op_utils",
407408
"//koladata/internal/testing:matchers",
409+
"@com_google_absl//absl/random",
408410
"@com_google_absl//absl/types:span",
409411
"@com_google_arolla//arolla/dense_array",
412+
"@com_google_arolla//arolla/memory",
410413
"@com_google_arolla//arolla/qtype",
411414
"@com_google_arolla//arolla/util",
412415
"@com_google_googletest//:gtest_main",
@@ -729,6 +732,23 @@ cc_library(
729732
],
730733
)
731734

735+
cc_test(
736+
name = "deep_clone_benchmarks",
737+
srcs = ["deep_clone_benchmarks.cc"],
738+
deps = [
739+
":deep_clone",
740+
":deep_op_benchmarks_util",
741+
"//koladata/internal:data_bag",
742+
"//koladata/internal:data_item",
743+
"//koladata/internal:data_slice",
744+
"@com_google_absl//absl/log:check",
745+
"@com_google_arolla//arolla/qtype",
746+
"@com_google_arolla//arolla/util/testing",
747+
"@com_google_benchmark//:benchmark_main",
748+
"@com_google_googletest//:gtest",
749+
],
750+
)
751+
732752
cc_test(
733753
name = "extract_benchmarks",
734754
srcs = ["extract_benchmarks.cc"],
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
// Copyright 2025 Google LLC
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
//
15+
#include "benchmark/benchmark.h"
16+
#include "absl/log/check.h"
17+
#include "arolla/qtype/base_types.h"
18+
#include "koladata/internal/data_bag.h"
19+
#include "koladata/internal/data_item.h"
20+
#include "koladata/internal/data_slice.h"
21+
#include "koladata/internal/op_utils/deep_op_benchmarks_util.h"
22+
#include "koladata/internal/op_utils/deep_clone.h"
23+
24+
namespace koladata::internal {
25+
namespace {
26+
27+
using benchmarks_utils::RunBenchmarksFn;
28+
29+
void RunBenchmarks(benchmark::State& state, DataSliceImpl& ds, DataItem& schema,
30+
DataBagImplPtr& databag,
31+
DataBagImpl::FallbackSpan fallbacks) {
32+
while (state.KeepRunning()) {
33+
benchmark::DoNotOptimize(ds);
34+
benchmark::DoNotOptimize(schema);
35+
benchmark::DoNotOptimize(databag);
36+
benchmark::DoNotOptimize(fallbacks);
37+
auto result_db = DataBagImpl::CreateEmptyDatabag();
38+
DeepCloneOp(result_db.get())(ds, schema, *databag, fallbacks).IgnoreError();
39+
benchmark::DoNotOptimize(result_db);
40+
}
41+
}
42+
43+
void BM_DisjointChains(benchmark::State& state) {
44+
benchmarks_utils::BM_DisjointChains(state, RunBenchmarks);
45+
}
46+
BENCHMARK(BM_DisjointChains)->Apply(benchmarks_utils::kBenchmarkFn);
47+
48+
void BM_DisjointChainsObjects(benchmark::State& state) {
49+
benchmarks_utils::BM_DisjointChainsObjects(state, RunBenchmarks);
50+
}
51+
BENCHMARK(BM_DisjointChainsObjects)->Apply(benchmarks_utils::kBenchmarkFn);
52+
53+
void BM_DAG(benchmark::State& state) {
54+
benchmarks_utils::BM_DAG(state, RunBenchmarks);
55+
}
56+
BENCHMARK(BM_DAG)->Apply(benchmarks_utils::kLayersBenchmarkFn);
57+
58+
void BM_DAGObjects(benchmark::State& state) {
59+
benchmarks_utils::BM_DAGObjects(state, RunBenchmarks);
60+
}
61+
BENCHMARK(BM_DAGObjects)->Apply(benchmarks_utils::kLayersBenchmarkFn);
62+
63+
} // namespace
64+
} // namespace koladata::internal

0 commit comments

Comments
 (0)