Closed
Description
What happened?
There appears to be an incredible amount of FFI overhead when using a driver built by recent versions of Go.
lidavidm@debian ~/C/arrow-adbc ((adfb70a2))> python tester.py (adbc-good)
Driver: /home/lidavidm/miniforge3/envs/adbc-good/lib/libadbc_driver_flightsql.so
Completed 100 iterations
Completed 200 iterations
Completed 300 iterations
Completed 400 iterations
Completed 500 iterations
Mean: 0.005054534418188268
Median: 0.004982210506568663
Sum: 2.527267209094134
lidavidm@debian ~/C/arrow-adbc ((adfb70a2))> python tester.py (adbc-bad)
Driver: /home/lidavidm/miniforge3/envs/adbc-bad/lib/libadbc_driver_flightsql.so
Completed 100 iterations
Completed 200 iterations
Completed 300 iterations
Completed 400 iterations
Completed 500 iterations
Mean: 0.023634329783672
Median: 0.02316386450547725
Sum: 11.817164891836
Stack Trace
N/A
How can we reproduce the bug?
$ go run github.com/apache/arrow/go/v17/arrow/flight/flightsql/example/cmd/sqlite_flightsql_server@latest -port 8080
import statistics
import time
import sys
import adbc_driver_flightsql.dbapi
print("Driver:", adbc_driver_flightsql._driver_path())
times = []
for i in range(500):
start = time.monotonic()
with adbc_driver_flightsql.dbapi.connect("grpc://localhost:8080") as conn:
with conn.cursor() as cursor:
cursor.execute("SELECT 1")
cursor.fetchall()
end = time.monotonic()
times.append(end - start)
if (i + 1) % 100 == 0:
print(f"Completed {i + 1} iterations")
print("Mean: ", statistics.mean(times))
print("Median:", statistics.median(times))
print("Sum: ", sum(times))
sys.exit(0)
Environment/Setup
Linux x86_64
Conda package versions 1.0.0 (built with go1.21.7, IIRC) vs 1.1.0 (go 1.22.5)
Activity