I really have the feeling that this is something trivial, since I am doing the same setup/teardown as I found here: https://github.com/Keno/StructIO.jl/issues/13 but that approach does not work to rewind the file before each step.
So I’d like to do some performance studies on parsing binary data and created an MWE:
using BenchmarkTools struct Foo a::Int32 b::Int32 end const fname = "test.dat" write(fname, [Foo(1, 2)]) function read_io(io::IOStream, t::T) where T a = read(io, Int32) b = read(io, Int32) t(a, b) end const fobj = open(fname, "r") @show read_io(fobj, Foo) seekstart(fobj) @time read_io(fobj, Foo) @btime read_io($fobj, Foo) setup=seekstart($fobj) close(fobj)
This throws an
> julia mwe.jl read_io(fobj, Foo) = Foo(1, 2) 0.000005 seconds (5 allocations: 176 bytes) ERROR: LoadError: EOFError: read end of file ...
Now my simple question: shouldn’t
setup=seekstart($fobj) rewind the file before each test? How do I benchmark this?