2222#include " node.h"
2323#include " raw_filter.h"
2424#include " rdtsc.h"
25+ #include " simd_search.h"
2526
2627EstimationResult Sparser::Calibrate (const std::vector<std::string_view>& input, const JsonQuery& json_query,
2728 const RawFilterData& rf_data) {
@@ -46,14 +47,14 @@ EstimationResult Sparser::Calibrate(const std::vector<std::string_view>& input,
4647 auto idx = GetFlatIdx (conj_idx, pred_idx, rf_idx);
4748
4849 auto grepStart = rdtsc ();
49- auto find_result = json_row. find ( rf);
50+ auto find_result = simd_search4 (json_row, rf);
5051 auto grepEnd = rdtsc ();
5152
5253 const auto rf_runtime = static_cast <double >(grepEnd - grepStart);
5354 total_rf_time += rf_runtime;
5455 rf_count++;
5556
56- if (find_result != std::string_view::npos ) {
57+ if (find_result) {
5758#ifndef NDEBUG
5859 std::cout << " Found: " << rf << " \n " ;
5960#endif
@@ -91,10 +92,15 @@ void Sparser::Run(const std::string& input_path, const JsonQuery& json_query) {
9192
9293 const auto & disjunction = json_query.GetDisjunction ();
9394 auto rf_data = RawFilterQueryGenerator::GenerateRawFilters (disjunction);
95+
96+ auto calibrate_time_start = benchmark_start ();
9497 auto estimation_result = Calibrate (sparser_input, json_query, rf_data);
98+ auto calibrate_time = benchmark_stop (calibrate_time_start);
99+ std::cout << " Calibration time: " << calibrate_time << ' \n ' ;
95100
96101 auto cascade_builder = CascadeBuilder (disjunction, rf_data);
97102 auto valid_cascades = cascade_builder.GenerateValidCascades ();
103+ std::cout << " Generated " << valid_cascades.size () << " valid cascades\n " ;
98104
99105 auto cascade_evaluator = CascadeEvaluator (estimation_result);
100106 double min_cost = std::numeric_limits<double >::max ();
@@ -141,8 +147,8 @@ SparserSearchStats Sparser::SearchCascade(const std::vector<std::string_view>& i
141147 while (root->type == NodeType::INTER) {
142148 auto rf = rf_data.data .at (root->conjunction_idx ).at (root->predicate_idx ).at (root->raw_filter_idx );
143149
144- auto find_result = record. find ( rf);
145- if (find_result != std::string_view::npos ) {
150+ auto find_result = simd_search4 (record, rf);
151+ if (find_result) {
146152 root = root->right ;
147153 } else {
148154 root = root->left ;
0 commit comments