mattn/go-sqlite3

Next and Scan appear to be relatively slow?

Open

#379 aperta il 7 feb 2017

Vedi su GitHub
 (10 commenti) (3 reazioni) (0 assegnatari)C (1105 fork)batch import
help wantedresearch

Metriche repository

Star
 (7000 star)
Metriche merge PR
 (Merge medio 1g 5h) (9 PR mergiate in 30 g)

Descrizione

Howdy. I'm not sure this really merits a Issues or if it would be better as a conversation some place. In using sqlite3 for a project and I noticed that it's quite a bit slower to select a large number of rows as compared to doing the same via their CLI client. ~4-5x slower. A little profiling shows that the time is mostly spent in Next and Scan. For small row sets it's not a big deal but I'm testing up to ~500K rows.

I suppose my starting question is how much overhead is expected going back and forth between Go and the C API? If it's expected to be fairly fast/low-overhead, any suspicions on where I might start looking?

Here's a sketch of approximately what the code is doing:

https://gist.github.com/mhat/ded97fe58922b4af9d03f375b465c339

There are two variations, one uses the new ScanTypes while the other is cheating with a list of string pointers. Neither appreciably moved the needly forScan.

Guida contributor