Re: Question about speed: Weird Behavior

From: Radosław Smogura <rsmogura(at)softperience(dot)eu>
To: pgsql-jdbc(at)postgresql(dot)org
Cc: Israel Ben Guilherme Fonseca <israel(dot)bgf(at)gmail(dot)com>
Subject: Re: Question about speed: Weird Behavior
Date: 2011-06-13 05:17:51
Message-ID: 201106130717.51752.rsmogura@softperience.eu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Israel Ben Guilherme Fonseca <israel(dot)bgf(at)gmail(dot)com> Monday 13 of June 2011
05:14:07
> I'm doing some speed tests, and I noticed something very strange.
>
> My test code:
>
> Connection con =
> DriverManager.getConnection("jdbc:postgresql://localhost:5432/tcc","postgre
> s","postgres"); PreparedStatement pst;
> ResultSet rs;
> Timer timer = new Timer();
>
> timer.start();
> pst = con.prepareStatement("select count(*) from Curso");
> rs = pst.executeQuery();
> rs.next();
> timer.stop();
>
> timer.start();
> pst = con.prepareStatement("select * from Curso");
> rs = pst.executeQuery();
> rs.next();
> timer.stop();
>
> At every stop, I print the milliseconds occurred between the begin and the
> end of the operation. The results were basically
>
> 1st operation: 0.05 miliseconds
> 2nd operation: 0.1 miliseconds
>
> That's ok, the strange thing is: When I comment the first operation and
> re-execute the test, the execution time of the 2nd operations increases by
> 50% (going to 0.15 miliseconds)
>
> If i inverse the order of operations, the speed is changed again, the 2nd
> (now 1st) get the 50% percent increase and the count(*) get even faster
> going to 0.005 miliseconds.
It's not stranga, server may keep some data in buffers or in system cache.
Compare your times on only 1st operations, but invoke select * in terminal.

> At first glance, I thought that it could be the statement pre-compiled but
> the two statements are different so it doesn't apply (i think). Using the
> Wireshark tool i could notice that the package sizes get bigger
> automatically (going from 8258 to 16450 and finally to 49218). From my
> readings, the Java Sockets have some configurations about buffer size that
> maybe is doing this.
This is system autotuning - a good solution.

> Even when I close the connection and open a new one, the new queries still
> get faster.
System cache.

> --
>
> Anyway, that speed increases is definitely a good thing, but why this
> happens it's a mystery for me. The problem is that my benchmark tests are
> influenced with this, cause the order of the tests can influence the
> outcome of the total time.
>
> Does someone know what's is this? And how could I disable this (if
> possible)?
>
> Thanks in advance,
>
> Israel

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Craig Ringer 2011-06-13 07:09:39 Re: Question about speed: Weird Behavior
Previous Message Oliver Jowett 2011-06-13 03:39:55 Re: Question about speed: Weird Behavior