Using antlr4 go to parse SQL takes too much time, eg:
I am using https://github.com/antlr/grammars-v4/blob/master/sql/mysql/Positive-Technologies/MySqlParser.g4
sql := fmt.Sprintf(`select * from xx where id=1`)
var is *antlr.InputStream
is = antlr.NewInputStream(sql)
lexer := parser.NewMySqlLexer(is)
tokens := antlr.NewCommonTokenStream(lexer, antlr.TokenDefaultChannel)
p := parser.NewMySqlParser(tokens)
startTime := time.Now()
p.Root()
endTime := time.Now()
elapsedTime := endTime.Sub(startTime)
fmt.Printf("Execution time:: %s \n", elapsedTime)
output:
Execution time: 50ms
How to optimize it? Using antlr4 go to parse SQL takes too much time, eg:
I am using https://github.com/antlr/grammars-v4/blob/master/sql/mysql/Positive-Technologies/MySqlParser.g4