diff options
author | Tim Barron <tjbarron@google.com> | 2023-03-06 17:26:23 -0800 |
---|---|---|
committer | Tim Barron <tjbarron@google.com> | 2023-03-06 17:26:23 -0800 |
commit | 53032446fec369125a6dc47c9f66435e4a62410b (patch) | |
tree | 779ba434530b8af387bc1e2f9f37aca52e298b1d /icing/index/index-processor_benchmark.cc | |
parent | 49064c458678781fbf3db256751658728dc87740 (diff) | |
download | icing-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.cc | 73 |
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( |