Re: Question about speed: Weird Behavior - Mailing list pgsql-jdbc

From Radosław Smogura
Subject Re: Question about speed: Weird Behavior
Date
Msg-id 56264945a293522f5d499649330d3f84@mail.softperience.eu
Whole thread Raw
In response to Re: Question about speed: Weird Behavior  (Israel Ben Guilherme Fonseca <israel.bgf@gmail.com>)
Responses Re: Question about speed: Weird Behavior  (Craig Ringer <craig@postnewspapers.com.au>)
Re: Question about speed: Weird Behavior  (Maciek Sakrejda <msakrejda@truviso.com>)
List pgsql-jdbc
 On Mon, 13 Jun 2011 08:31:41 -0300, Israel Ben Guilherme Fonseca wrote:
> The actual tests are executed many times, I just tried to make a
> simpler test to be easier to understand.
>
> I executed this code some times to get the average of the result.
>
> Other point:
>
> Executing this code 10 times give different averages of executing the
> same code in 10 times loop. So the system cache is actually linked to
> the same JVM instance?
 No system cache where PostgreSQL server resides, if you query database
 for something DB need to read disk, if those data are in cache then it
 will go faster.

 Of course whole image is much more complicated. There may be some
 fluctuations with JIT, as Craig wrote (actually you should take times
 after 1000 of invocations - if it's client JVM , or change compile
 threshold in JVM to be sure if JVM doesn't gives you overhead). There
 may be some GC overhead, you should call System.gc after or before each
 pass to start with similar environment. As well, some if you connect
 through TCP/IP this may randomize your results too.

 Regards,
 Radek

>At each separated invocation the values keep
> somewhat constant, differently from one execution with a loop.
>
> Ill try the "select *" approach in the terminal later.
>
> 2011/6/13 Craig Ringer
>
>> On 13/06/11 11:14, Israel Ben Guilherme Fonseca wrote:
>>
>> > 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
>>
>> I suspect youre right on the border of the precision the timers you
>> are
>> using can offer you. Its hard to be sure as you didnt mention you
>> platform, CPU, or JDK version.
>>
>> Try using System.nanoTime() for your timing, and/or (much better)
>> do
>> many iterations rather than just one to try to smooth out error and
>> jitter.
>>
>>
>
> http://download.oracle.com/javase/1,5.0/docs/api/java/lang/System.html#nanoTime()
>> [1]
>>
>> > Anyway, that speed increases is definitely a good thing, but why
>> this
>> > happens its 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.
>>
>> You really need to tweak your benchmarks to reflect more of a
>> real-world
>> workload. Timing tiny statements stand-alone will not give you data
>> with
>> any relationship to what will happen under real load with many such
>> operations happening concurrently or thousands of them being
>> executed in
>> rapid sequence.
>>
>> --
>> Craig Ringer
>
>
>
> Links:
> ------
> [1]
>
> http://download.oracle.com/javase/1,5.0/docs/api/java/lang/System.html#nanoTime%28%29
> [2] mailto:craig@postnewspapers.com.au


pgsql-jdbc by date:

Previous
From: Israel Ben Guilherme Fonseca
Date:
Subject: Re: Question about speed: Weird Behavior
Next
From: Craig Ringer
Date:
Subject: Re: Question about speed: Weird Behavior