Subject | Re: [firebird-python] fdb performance |
---|---|
Author | |
Post date | 2017-07-11T20:37:12Z |
Hi Pavel,
I was not using a prepared statement -- I think I was looking at the 0.9.9 docs on firebirdsql.org and I missed that it no longer creates them. (To which I'll add: it would be nice if it behaved the same as kinterbasdb [where a cursor prepares/caches only the current statement] so it is a drop in replacement. But if that's non standard behavior, I understand).
Using a prepared statement definitely helps -- it's over twice as fast. However kinterbasdb is still about 50-150% faster. My simple table is at the 150% end, and consists of an integer pk and 3 varchars with the same 3 strings every insert. I'm not sure if that helps at all -- is there anything we can do?
cProfile looks like (total run time was 129.5 seconds):
ncalls tottime percall cumtime percall filename:lineno(function)
100001 1.824 0.000 128.999 0.001 fbcore.py:3554(execute)
100001 52.689 0.001 61.693 0.001 fbcore.py:2144(__init__)
100001 43.456 0.000 57.466 0.001 fbcore.py:3257(_execute)
100000 5.887 0.000 13.024 0.000 fbcore.py:2997(__Tuple2XSQLDA)
100001 0.290 0.000 6.729 0.000 fbcore.py:3371(__del__)
100001 1.672 0.000 6.439 0.000 fbcore.py:3236(_close)
200004 0.691 0.000 4.773 0.000 fbcore.py:428(is_dead_proxy)
Thanks,
Nathan