ah! I thought I had scrutinized your repos for such a thing (you usually have quite the gems over there) but overlooked that one.
thanks. sadly, the improvement wasn't impressive (probably a testimony to the performances of the linux filesystem layer...) copying the whole file's content into a []byte and building my own reader+readerat on top of that got me the same perfs than with your libs. now, my biggest time consumers are: ROUTINE ======================== go-hep.org/x/hep/rootio.(*LeafD).readBasket in /usr/lib/go/src/encoding/binary/binary.go 3.25s 3.25s (flat, cum) 18.83% of Total . . 121:} . . 122: . . 123:func (bigEndian) Uint64(b []byte) uint64 { . . 124: _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 . . 125: return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | 3.25s 3.25s 126: uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 . . 127:} which compiles down to: 70ms 70ms 4f028d: ANDQ SI, BX ; go-hep.org/x/hep/rootio.(*LeafD).readBasket rbuffer.go:307 . . 4f0290: CMPQ $0x7, DX ;binary.go:124 . . 4f0294: JBE 0x4f02e1 . . 4f0296: MOVQ 0(DI)(BX*1), DX ;binary.go:126 3.25s 3.25s 4f029a: BSWAP DX ; go-hep.org/x/hep/rootio.(*LeafD).readBasket binary.go:126 90ms 90ms 4f029d: MOVQ DX, 0x38(SP) ; go-hep.org/x/hep/rootio.(*LeafD).readBasket rbuffer.go:308 so probably not much to be gained here... the profile is here: https://cern.ch/binet/go-hep/rootio.cpu.pprof https://cern.ch/binet/go-hep/read-data.go (if anyone's interested in making that program as fast or even faster than the C++ one... it's for science! :P) -s On Sat, Sep 16, 2017 at 2:05 PM, Jan Mercl <0xj...@gmail.com> wrote: > On Sat, Sep 16, 2017 at 1:52 PM Sebastien Binet <seb.bi...@gmail.com> > wrote: > > > Has anybody written a buffered version of an io.ReaderAt ? > > IIUC what's needed, you might want to try https://github.com/cznic/ > file/blob/efffc965e97bbf31b0ed00deb82fe697500f22b5/file.go#L1039 > > -- > > -j > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.