Subject Re: [firebird-python] fdb performance
Author
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