Commit 5959360
committed
reduce allocations when binding string/time args
This commit reduces the number of allocations required to bind args by
eliminating string to byte slice conversions for string and time.Time
types and by only checking for bind parameters if any of the
driver.NamedValue args are named.
```
goos: darwin
goarch: arm64
pkg: github.com/charlievieth/go-sqlite3
cpu: Apple M4 Pro
│ x1.txt │ x2.txt │
│ sec/op │ sec/op vs base │
Suite/BenchmarkExec/Params-14 720.8n ± 1% 675.1n ± 1% -6.33% (p=0.000 n=10)
Suite/BenchmarkExec/NoParams-14 493.0n ± 1% 467.5n ± 1% -5.18% (p=0.000 n=10)
Suite/BenchmarkExecContext/Params-14 1.601µ ± 4% 1.538µ ± 1% -3.97% (p=0.000 n=10)
Suite/BenchmarkExecContext/NoParams-14 1.416µ ± 1% 1.417µ ± 2% ~ (p=0.566 n=10)
Suite/BenchmarkExecStep-14 421.0µ ± 1% 415.1µ ± 1% -1.39% (p=0.004 n=10)
Suite/BenchmarkExecContextStep-14 421.6µ ± 1% 415.7µ ± 1% -1.41% (p=0.009 n=10)
Suite/BenchmarkExecTx-14 1.537µ ± 1% 1.535µ ± 3% ~ (p=0.342 n=10)
Suite/BenchmarkQuery-14 1.837µ ± 1% 1.826µ ± 1% ~ (p=0.093 n=10)
Suite/BenchmarkQuerySimple-14 1.127µ ± 1% 1.115µ ± 0% -1.15% (p=0.000 n=10)
Suite/BenchmarkQueryContext/Background-14 2.349µ ± 1% 2.323µ ± 1% ~ (p=0.052 n=10)
Suite/BenchmarkQueryContext/WithCancel-14 8.796µ ± 5% 8.624µ ± 5% ~ (p=0.912 n=10)
Suite/BenchmarkParams-14 2.043µ ± 2% 1.989µ ± 1% -2.64% (p=0.000 n=10)
Suite/BenchmarkStmt-14 1.383µ ± 1% 1.368µ ± 0% -1.12% (p=0.000 n=10)
Suite/BenchmarkRows-14 57.55µ ± 1% 56.86µ ± 1% ~ (p=0.052 n=10)
Suite/BenchmarkStmtRows-14 56.57µ ± 1% 56.89µ ± 2% ~ (p=0.739 n=10)
Suite/BenchmarkStmt10Cols-14 4.230µ ± 1% 4.222µ ± 1% ~ (p=0.109 n=10)
geomean 5.281µ 5.189µ -1.75%
│ x1.txt │ x2.txt │
│ B/op │ B/op vs base │
Suite/BenchmarkExec/Params-14 240.0 ± 0% 216.0 ± 0% -10.00% (p=0.000 n=10)
Suite/BenchmarkExec/NoParams-14 64.00 ± 0% 64.00 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkExecContext/Params-14 399.0 ± 0% 375.0 ± 0% -6.02% (p=0.000 n=10)
Suite/BenchmarkExecContext/NoParams-14 208.0 ± 0% 208.0 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkExecStep-14 64.00 ± 0% 64.00 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkExecContextStep-14 208.0 ± 0% 208.0 ± 0% ~ (p=0.737 n=10)
Suite/BenchmarkExecTx-14 520.0 ± 0% 520.0 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkQuery-14 656.0 ± 0% 656.0 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkQuerySimple-14 456.0 ± 0% 456.0 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkQueryContext/Background-14 396.0 ± 0% 396.0 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkQueryContext/WithCancel-14 1.273Ki ± 0% 1.273Ki ± 0% ~ (p=0.211 n=10)
Suite/BenchmarkParams-14 904.0 ± 0% 800.0 ± 0% -11.50% (p=0.000 n=10)
Suite/BenchmarkStmt-14 888.0 ± 0% 784.0 ± 0% -11.71% (p=0.000 n=10)
Suite/BenchmarkRows-14 9.188Ki ± 0% 9.188Ki ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkStmtRows-14 9.180Ki ± 0% 9.180Ki ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkStmt10Cols-14 712.0 ± 0% 712.0 ± 0% ~ (p=1.000 n=10) ¹
geomean 549.4 535.4 -2.56%
¹ all samples are equal
│ x1.txt │ x2.txt │
│ allocs/op │ allocs/op vs base │
Suite/BenchmarkExec/Params-14 9.000 ± 0% 8.000 ± 0% -11.11% (p=0.000 n=10)
Suite/BenchmarkExec/NoParams-14 4.000 ± 0% 4.000 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkExecContext/Params-14 11.00 ± 0% 10.00 ± 0% -9.09% (p=0.000 n=10)
Suite/BenchmarkExecContext/NoParams-14 6.000 ± 0% 6.000 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkExecStep-14 4.000 ± 0% 4.000 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkExecContextStep-14 6.000 ± 0% 6.000 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkExecTx-14 18.00 ± 0% 18.00 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkQuery-14 22.00 ± 0% 22.00 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkQuerySimple-14 13.00 ± 0% 13.00 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkQueryContext/Background-14 10.00 ± 0% 10.00 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkQueryContext/WithCancel-14 26.00 ± 0% 26.00 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkParams-14 25.00 ± 0% 23.00 ± 0% -8.00% (p=0.000 n=10)
Suite/BenchmarkStmt-14 25.00 ± 0% 23.00 ± 0% -8.00% (p=0.000 n=10)
Suite/BenchmarkRows-14 518.0 ± 0% 518.0 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkStmtRows-14 518.0 ± 0% 518.0 ± 0% ~ (p=1.000 n=10) ¹
Suite/BenchmarkStmt10Cols-14 19.00 ± 0% 19.00 ± 0% ~ (p=1.000 n=10) ¹
geomean 18.80 18.36 -2.35%
¹ all samples are equal
```1 parent 8ba2e97 commit 5959360
1 file changed
+77
-16
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2182 | 2182 | | |
2183 | 2183 | | |
2184 | 2184 | | |
| 2185 | + | |
| 2186 | + | |
| 2187 | + | |
| 2188 | + | |
| 2189 | + | |
| 2190 | + | |
| 2191 | + | |
| 2192 | + | |
| 2193 | + | |
2185 | 2194 | | |
2186 | 2195 | | |
2187 | 2196 | | |
2188 | 2197 | | |
2189 | 2198 | | |
2190 | 2199 | | |
| 2200 | + | |
| 2201 | + | |
| 2202 | + | |
| 2203 | + | |
| 2204 | + | |
| 2205 | + | |
| 2206 | + | |
| 2207 | + | |
| 2208 | + | |
| 2209 | + | |
| 2210 | + | |
| 2211 | + | |
| 2212 | + | |
| 2213 | + | |
| 2214 | + | |
| 2215 | + | |
| 2216 | + | |
| 2217 | + | |
| 2218 | + | |
| 2219 | + | |
| 2220 | + | |
| 2221 | + | |
| 2222 | + | |
| 2223 | + | |
| 2224 | + | |
| 2225 | + | |
| 2226 | + | |
| 2227 | + | |
| 2228 | + | |
| 2229 | + | |
| 2230 | + | |
| 2231 | + | |
| 2232 | + | |
| 2233 | + | |
| 2234 | + | |
| 2235 | + | |
| 2236 | + | |
| 2237 | + | |
| 2238 | + | |
| 2239 | + | |
| 2240 | + | |
| 2241 | + | |
| 2242 | + | |
| 2243 | + | |
| 2244 | + | |
| 2245 | + | |
| 2246 | + | |
| 2247 | + | |
| 2248 | + | |
| 2249 | + | |
| 2250 | + | |
| 2251 | + | |
| 2252 | + | |
| 2253 | + | |
2191 | 2254 | | |
2192 | | - | |
2193 | 2255 | | |
2194 | 2256 | | |
2195 | 2257 | | |
2196 | | - | |
2197 | | - | |
2198 | | - | |
2199 | | - | |
| 2258 | + | |
| 2259 | + | |
| 2260 | + | |
| 2261 | + | |
| 2262 | + | |
2200 | 2263 | | |
2201 | 2264 | | |
2202 | 2265 | | |
2203 | 2266 | | |
2204 | 2267 | | |
| 2268 | + | |
2205 | 2269 | | |
2206 | 2270 | | |
2207 | 2271 | | |
| |||
2212 | 2276 | | |
2213 | 2277 | | |
2214 | 2278 | | |
2215 | | - | |
2216 | | - | |
2217 | | - | |
2218 | | - | |
2219 | | - | |
2220 | | - | |
| 2279 | + | |
| 2280 | + | |
2221 | 2281 | | |
2222 | 2282 | | |
2223 | 2283 | | |
| 2284 | + | |
2224 | 2285 | | |
2225 | | - | |
2226 | | - | |
2227 | | - | |
| 2286 | + | |
2228 | 2287 | | |
| 2288 | + | |
2229 | 2289 | | |
2230 | 2290 | | |
2231 | 2291 | | |
| |||
2239 | 2299 | | |
2240 | 2300 | | |
2241 | 2301 | | |
2242 | | - | |
2243 | | - | |
| 2302 | + | |
| 2303 | + | |
| 2304 | + | |
2244 | 2305 | | |
2245 | 2306 | | |
2246 | 2307 | | |
| |||
0 commit comments