>>>>> "Euler" == Euler Taveira de Oliveira <euler@timbira.com> writes:
Euler> Ops... forgot to remove it from other test. It seems muchEuler> better but far from the ideal. :( I've never
takena look atEuler> the pl/pgsql code but it could be nice if there would be twoEuler> path codes: access-data and
non-access-datapaths. I have noEuler> idea if it will be possible (is path type too complex toEuler> detect?) but it
willcertainly improve the non-access-dataEuler> functions.
Like Tom said, this benchmark is silly. Some comparisons (note that in
all these cases I've replaced the power(10,8) with a constant, because
you weren't comparing like with like there):
plpgsql 13.3 sec
tcl85 29.9 sec
perl5.8 7.7 sec
python2.6 11.5 sec
C 0.242 sec
What this suggests to me is that plpgsql isn't so far off the norm for
interpreted scripting languages; sure it's slower than perl, but then
most things are; comparing it with C code is just silly.
There is, though, one genuine case that's come up a few times in IRC
regarding slowness of procedural code in pg, and that's any time
someone tries to implement some array-based algorithm in plpgsql. The
fact that a[i] is O(i) not O(1) (unless the array type is fixed length)
comes as a nasty shock since iterating over an array becomes O(n^2).
This is obviously a consequence of the array storage format; is there
any potential for changing that to some format which has, say, an array
of element offsets at the start, rather than relying on stepping over
length fields?
--
Andrew (irc:RhodiumToad)