compare android::Vector and std::vector
Have been wondering for a while. Test: libutils_benchmark -------------------------------------------------------------------- Benchmark Time CPU Iterations -------------------------------------------------------------------- BM_fill_android_vector 24.6 ns 24.5 ns 28207074 BM_fill_std_vector 5.24 ns 5.21 ns 130675479 BM_prepend_android_vector 5783 ns 5770 ns 100000 BM_prepend_std_vector 5731 ns 5717 ns 100000 Change-Id: Ie296ce2c4395121b6a456d57421f820909418afe
This commit is contained in:
parent
a9ffef27e1
commit
c732c03482
2 changed files with 59 additions and 0 deletions
|
@ -289,3 +289,9 @@ cc_test_library {
|
|||
],
|
||||
shared_libs: ["libutils_test_singleton1"],
|
||||
}
|
||||
|
||||
cc_benchmark {
|
||||
name: "libutils_benchmark",
|
||||
srcs: ["Vector_benchmark.cpp"],
|
||||
shared_libs: ["libutils"],
|
||||
}
|
||||
|
|
53
libutils/Vector_benchmark.cpp
Normal file
53
libutils/Vector_benchmark.cpp
Normal file
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <benchmark/benchmark.h>
|
||||
#include <utils/Vector.h>
|
||||
#include <vector>
|
||||
|
||||
void BM_fill_android_vector(benchmark::State& state) {
|
||||
android::Vector<char> v;
|
||||
while (state.KeepRunning()) {
|
||||
v.push('A');
|
||||
}
|
||||
}
|
||||
BENCHMARK(BM_fill_android_vector);
|
||||
|
||||
void BM_fill_std_vector(benchmark::State& state) {
|
||||
std::vector<char> v;
|
||||
while (state.KeepRunning()) {
|
||||
v.push_back('A');
|
||||
}
|
||||
}
|
||||
BENCHMARK(BM_fill_std_vector);
|
||||
|
||||
void BM_prepend_android_vector(benchmark::State& state) {
|
||||
android::Vector<char> v;
|
||||
while (state.KeepRunning()) {
|
||||
v.insertAt('A', 0);
|
||||
}
|
||||
}
|
||||
BENCHMARK(BM_prepend_android_vector);
|
||||
|
||||
void BM_prepend_std_vector(benchmark::State& state) {
|
||||
std::vector<char> v;
|
||||
while (state.KeepRunning()) {
|
||||
v.insert(v.begin(), 'A');
|
||||
}
|
||||
}
|
||||
BENCHMARK(BM_prepend_std_vector);
|
||||
|
||||
BENCHMARK_MAIN();
|
Loading…
Reference in a new issue