aboutsummaryrefslogtreecommitdiff
path: root/icing/index/index-processor_benchmark.cc
diff options
context:
space:
mode:
authorTim Barron <tjbarron@google.com>2023-03-06 17:26:23 -0800
committerTim Barron <tjbarron@google.com>2023-03-06 17:26:23 -0800
commit53032446fec369125a6dc47c9f66435e4a62410b (patch)
tree779ba434530b8af387bc1e2f9f37aca52e298b1d /icing/index/index-processor_benchmark.cc
parent49064c458678781fbf3db256751658728dc87740 (diff)
downloadicing-53032446fec369125a6dc47c9f66435e4a62410b.tar.gz
Update Icing from upstream.
Descriptions: ====================================================================== Refactor IndexProcessor ====================================================================== Rename Joinable Cache as Joinable Index ====================================================================== Implement Optimize and Clear for QualifiedIdTypeJoinableCache ====================================================================== Add JoinablePropertyMetadata reverse lookup ====================================================================== Allow code creating LanguageSegmenter::Iterators to declare AccessType ====================================================================== Further codifies the escape behavior in the parser test ====================================================================== Bug: 263890397 Bug: 268680462 Bug: 270102295 Change-Id: I3233733b40e985e11c4a6d75c1528cd6a72c1173
Diffstat (limited to 'icing/index/index-processor_benchmark.cc')
-rw-r--r--icing/index/index-processor_benchmark.cc73
1 files changed, 56 insertions, 17 deletions
diff --git a/icing/index/index-processor_benchmark.cc b/icing/index/index-processor_benchmark.cc
index 6608e44..ee43364 100644
--- a/icing/index/index-processor_benchmark.cc
+++ b/icing/index/index-processor_benchmark.cc
@@ -12,14 +12,22 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+#include <memory>
+#include <utility>
+#include <vector>
+
+#include "icing/text_classifier/lib3/utils/base/statusor.h"
#include "testing/base/public/benchmark.h"
#include "gmock/gmock.h"
#include "icing/document-builder.h"
#include "icing/file/filesystem.h"
+#include "icing/index/data-indexing-handler.h"
#include "icing/index/index-processor.h"
#include "icing/index/index.h"
-#include "icing/index/numeric/dummy-numeric-index.h"
+#include "icing/index/integer-section-indexing-handler.h"
+#include "icing/index/numeric/integer-index.h"
#include "icing/index/numeric/numeric-index.h"
+#include "icing/index/string-section-indexing-handler.h"
#include "icing/legacy/core/icing-string-util.h"
#include "icing/schema/schema-store.h"
#include "icing/schema/schema-util.h"
@@ -173,6 +181,24 @@ std::unique_ptr<SchemaStore> CreateSchemaStore(const Filesystem& filesystem,
return schema_store;
}
+libtextclassifier3::StatusOr<std::vector<std::unique_ptr<DataIndexingHandler>>>
+CreateDataIndexingHandlers(const Clock* clock, const Normalizer* normalizer,
+ Index* index, NumericIndex<int64_t>* integer_index) {
+ ICING_ASSIGN_OR_RETURN(
+ std::unique_ptr<StringSectionIndexingHandler>
+ string_section_indexing_handler,
+ StringSectionIndexingHandler::Create(clock, normalizer, index));
+ ICING_ASSIGN_OR_RETURN(
+ std::unique_ptr<IntegerSectionIndexingHandler>
+ integer_section_indexing_handler,
+ IntegerSectionIndexingHandler::Create(clock, integer_index));
+
+ std::vector<std::unique_ptr<DataIndexingHandler>> handlers;
+ handlers.push_back(std::move(string_section_indexing_handler));
+ handlers.push_back(std::move(integer_section_indexing_handler));
+ return handlers;
+}
+
void CleanUp(const Filesystem& filesystem, const std::string& base_dir) {
filesystem.DeleteDirectoryRecursively(base_dir.c_str());
}
@@ -198,7 +224,7 @@ void BM_IndexDocumentWithOneProperty(benchmark::State& state) {
CreateIndex(icing_filesystem, filesystem, index_dir);
ICING_ASSERT_OK_AND_ASSIGN(
std::unique_ptr<NumericIndex<int64_t>> integer_index,
- DummyNumericIndex<int64_t>::Create(filesystem, integer_index_dir));
+ IntegerIndex::Create(filesystem, integer_index_dir));
language_segmenter_factory::SegmenterOptions options(ULOC_US);
std::unique_ptr<LanguageSegmenter> language_segmenter =
language_segmenter_factory::Create(std::move(options)).ValueOrDie();
@@ -206,10 +232,14 @@ void BM_IndexDocumentWithOneProperty(benchmark::State& state) {
Clock clock;
std::unique_ptr<SchemaStore> schema_store =
CreateSchemaStore(filesystem, &clock, base_dir);
+
ICING_ASSERT_OK_AND_ASSIGN(
- std::unique_ptr<IndexProcessor> index_processor,
- IndexProcessor::Create(normalizer.get(), index.get(), integer_index.get(),
- &clock));
+ std::vector<std::unique_ptr<DataIndexingHandler>> handlers,
+ CreateDataIndexingHandlers(&clock, normalizer.get(), index.get(),
+ integer_index.get()));
+ auto index_processor =
+ std::make_unique<IndexProcessor>(std::move(handlers), &clock);
+
DocumentProto input_document = CreateDocumentWithOneProperty(state.range(0));
TokenizedDocument tokenized_document(std::move(
TokenizedDocument::Create(schema_store.get(), language_segmenter.get(),
@@ -268,7 +298,7 @@ void BM_IndexDocumentWithTenProperties(benchmark::State& state) {
CreateIndex(icing_filesystem, filesystem, index_dir);
ICING_ASSERT_OK_AND_ASSIGN(
std::unique_ptr<NumericIndex<int64_t>> integer_index,
- DummyNumericIndex<int64_t>::Create(filesystem, integer_index_dir));
+ IntegerIndex::Create(filesystem, integer_index_dir));
language_segmenter_factory::SegmenterOptions options(ULOC_US);
std::unique_ptr<LanguageSegmenter> language_segmenter =
language_segmenter_factory::Create(std::move(options)).ValueOrDie();
@@ -276,10 +306,13 @@ void BM_IndexDocumentWithTenProperties(benchmark::State& state) {
Clock clock;
std::unique_ptr<SchemaStore> schema_store =
CreateSchemaStore(filesystem, &clock, base_dir);
+
ICING_ASSERT_OK_AND_ASSIGN(
- std::unique_ptr<IndexProcessor> index_processor,
- IndexProcessor::Create(normalizer.get(), index.get(), integer_index.get(),
- &clock));
+ std::vector<std::unique_ptr<DataIndexingHandler>> handlers,
+ CreateDataIndexingHandlers(&clock, normalizer.get(), index.get(),
+ integer_index.get()));
+ auto index_processor =
+ std::make_unique<IndexProcessor>(std::move(handlers), &clock);
DocumentProto input_document =
CreateDocumentWithTenProperties(state.range(0));
@@ -340,7 +373,7 @@ void BM_IndexDocumentWithDiacriticLetters(benchmark::State& state) {
CreateIndex(icing_filesystem, filesystem, index_dir);
ICING_ASSERT_OK_AND_ASSIGN(
std::unique_ptr<NumericIndex<int64_t>> integer_index,
- DummyNumericIndex<int64_t>::Create(filesystem, integer_index_dir));
+ IntegerIndex::Create(filesystem, integer_index_dir));
language_segmenter_factory::SegmenterOptions options(ULOC_US);
std::unique_ptr<LanguageSegmenter> language_segmenter =
language_segmenter_factory::Create(std::move(options)).ValueOrDie();
@@ -348,10 +381,13 @@ void BM_IndexDocumentWithDiacriticLetters(benchmark::State& state) {
Clock clock;
std::unique_ptr<SchemaStore> schema_store =
CreateSchemaStore(filesystem, &clock, base_dir);
+
ICING_ASSERT_OK_AND_ASSIGN(
- std::unique_ptr<IndexProcessor> index_processor,
- IndexProcessor::Create(normalizer.get(), index.get(), integer_index.get(),
- &clock));
+ std::vector<std::unique_ptr<DataIndexingHandler>> handlers,
+ CreateDataIndexingHandlers(&clock, normalizer.get(), index.get(),
+ integer_index.get()));
+ auto index_processor =
+ std::make_unique<IndexProcessor>(std::move(handlers), &clock);
DocumentProto input_document =
CreateDocumentWithDiacriticLetters(state.range(0));
@@ -412,7 +448,7 @@ void BM_IndexDocumentWithHiragana(benchmark::State& state) {
CreateIndex(icing_filesystem, filesystem, index_dir);
ICING_ASSERT_OK_AND_ASSIGN(
std::unique_ptr<NumericIndex<int64_t>> integer_index,
- DummyNumericIndex<int64_t>::Create(filesystem, integer_index_dir));
+ IntegerIndex::Create(filesystem, integer_index_dir));
language_segmenter_factory::SegmenterOptions options(ULOC_US);
std::unique_ptr<LanguageSegmenter> language_segmenter =
language_segmenter_factory::Create(std::move(options)).ValueOrDie();
@@ -420,10 +456,13 @@ void BM_IndexDocumentWithHiragana(benchmark::State& state) {
Clock clock;
std::unique_ptr<SchemaStore> schema_store =
CreateSchemaStore(filesystem, &clock, base_dir);
+
ICING_ASSERT_OK_AND_ASSIGN(
- std::unique_ptr<IndexProcessor> index_processor,
- IndexProcessor::Create(normalizer.get(), index.get(), integer_index.get(),
- &clock));
+ std::vector<std::unique_ptr<DataIndexingHandler>> handlers,
+ CreateDataIndexingHandlers(&clock, normalizer.get(), index.get(),
+ integer_index.get()));
+ auto index_processor =
+ std::make_unique<IndexProcessor>(std::move(handlers), &clock);
DocumentProto input_document = CreateDocumentWithHiragana(state.range(0));
TokenizedDocument tokenized_document(std::move(