[erlang-questions] ODBC 160 times slower thatn pgsql - is it normal?

Sergey S. neavirc@REDACTED
Mon Sep 8 17:52:19 CEST 2008


Hello.

I've wrote simple benchmark, in order to test ODBC and pgsql drivers. I got
very strange results, saying that ODBC 160 times slower than pgsql:

[pgsql_bm] runtime = 50, wall_clock = 144

[odbc_bm] runtime = 0, wall_clock = 8009

There might be my mistake in odbc.ini/odbcinst.ini or smth else, so I'm
writting this letter. Is it normal that ODBC works too slow?

The code used:

------------------------------------

odbc_bm() ->
    odbc:start(),
    {ok, Ref} = odbc:connect("DSN=PostgreSQL", []),
    benchmark("odbc_bm",
                     fun() -> odbc:sql_query(Ref, "INSERT INTO foo (bar)
VALUES (123)") end,
                     200),
    odbc:stop().

pgsql_bm() ->
    {ok, Db} = pgsql:connect("localhost", "gin", "gin", ""),
    benchmark("pgsql_bm",
                     fun() -> pgsql:squery(Db, "INSERT INTO foo (bar) VALUES
(123)") end,
                     200),
    pgsql:terminate(Db).

benchmark(Title, Fun, Times) ->
    statistics(runtime),
    statistics(wall_clock),
    for(1, Times, Fun),
    {_, Runtime} = statistics(runtime),
    {_, Wallclock} = statistics(wall_clock),

for(I, Max, _) when I > Max ->
    ok;
for(I, Max, F) ->
    F(),
    for(I+1, Max, F).

------------------------------------

Additional information:
I use pgsql from ejabberd-modules package, erlang R12B.3, PostgreSQL 8.3.3,
unixodbc 2.2.12, psqlodbc 08.03.0200
OS: Archlinux current

odbc.ini:

[PostgreSQL]
Description     = foobar
Driver          = PostgreSQL
Database        = gin
Servername      = localhost
UserName        = sergey
Password        =

odbcinst.ini:

[PostgreSQL]
Description     = PostgreSQL driver
Driver = /usr/lib/psqlodbcw.so
Setup           = /usr/lib/libodbcpsqlS.so

--

Sergey
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20080908/f67765dc/attachment.htm>


More information about the erlang-questions mailing list