#include #include #include #include #include #include #include #include namespace NSQLComplete { NSQLComplete::TLexerSupplier MakePureLexerSupplier() { NSQLTranslationV1::TLexers lexers; lexers.Antlr4Pure = NSQLTranslationV1::MakeAntlr4PureLexerFactory(); lexers.Antlr4PureAnsi = NSQLTranslationV1::MakeAntlr4PureAnsiLexerFactory(); return [lexers = std::move(lexers)](bool ansi) { return NSQLTranslationV1::MakeLexer( lexers, ansi, NSQLTranslationV1::ELexerFlavor::Pure); }; } void BenchmarkComplete(benchmark::State& state) { auto names = NSQLComplete::LoadDefaultNameSet(); auto ranking = NSQLComplete::MakeDefaultRanking(); auto service = MakeStaticNameService(std::move(names), std::move(ranking)); auto engine = MakeSqlCompletionEngine(MakePureLexerSupplier(), std::move(service)); for (const auto _ : state) { auto completion = engine->Complete({.Text = "SELECT "}); benchmark::DoNotOptimize(completion); } } } // namespace NSQLComplete BENCHMARK(NSQLComplete::BenchmarkComplete);