The Parsers.jl package is setup to handle these kind of parsing scenarios quite well. In this case, you can do something like:
parser = Parsers.Delimited(" "; ignorerepeated=true)
io = IOBuffer("1.0 2.34345 7.9")
Parsers.parse(parser, io, Float64) # returns 1.0
Parsers.parse(parser, io, Float64) # returns 2.34345
Parsers.parse(parser, io, Float64) # returns 7.9
It’s a bit tricky to benchmark because it relies on parsing from an IOBuffer
, but it’s also very fast because it’s making exactly one pass over the strings in parsing all three numbers.
Let me know if you have any questions or concerns.