Re: JAVA vs PERL : PERL wins to postgreSQL

From: Barry Lind <barry(at)xythos(dot)com>
To: andy <andy(at)exkom(dot)co(dot)za>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: JAVA vs PERL : PERL wins to postgreSQL
Date: 2001-09-04 16:48:32
Message-ID: 3B9505E0.9070001@xythos.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Andy,

Thanks for the code. In looking at this there are two things that come
to mind:

1) You probably should be running vacuum after the delete to clean up
the table, but on a table this small, I doubt it will make any real
difference.

2) Why have you set autocommit on? This should be much faster with
autocommit off.

Actually I just did a quick test of the two changes I mentioned above.
The first (vacuum) doesn't make any noticable difference, however
turning autocommit off causes the timings on my machine to go from 14
seconds to 6 seconds. Better than 50% improvement.

thanks,
--Barry

andy wrote:
> To all those who responded ,
> Thanks for your response,
>
> I have attached the test programs that I used in the form of text files. The
> contents should be self evident. Please have a look and comment.
>
> I used j2sdk1.3.1 down load to linux machine from sun.com as my java platform
> and
> And perl, v5.6.0 built for i386-linux.
> The PostgreSQL driver for perl came from www.perl.org
> The postgreSQL driver in jdbc7.0-1.2.jar
>
>
> Barry Lind wrote:
>
>
>>Andy,
>>
>>I would be interesting in knowing what version you did this test on,
>>what platform, and most importantly which JDK (and if the Sun JDK which
>>JVM: classic, hotspot client, hotspot server).
>>
>>thanks,
>>--Barry
>>
>>andy wrote:
>>
>>>Hi,
>>>
>>>I ran a few bench marks on JAVA writing to a postgreSQL table using and
>>>found that for the same number of records added to the table as a
>>>similar PERL routine the following results :
>>> PERL 39 seconds : JAVA 45 Seconds.
>>>In a similar experiment where PERL and JAVA did treir output to the
>>>screen and not to a table,
>>>
>>>JAVA took 3 seconds and PERL 310 Seconds.
>>>My conclusion is that the database driver to postgreSQL is still far
>>>from efficient in the JAVA implementation.
>>>
>>>Both tests were run on the same computer.
>>>
>>>I would appreciate your comments and suggestions.
>>>Andy Sewell
>>>
>>>
>>>---------------------------(end of broadcast)---------------------------
>>>TIP 5: Have you checked our extensive FAQ?
>>>
>>>http://www.postgresql.org/users-lounge/docs/faq.html
>>>
>>>
>>>
>>>
>>>------------------------------------------------------------------------
>>>
>>>/*
>>> Java bench mark against perl count to 100 000 000
>>>*/
>>>import java.io.*;
>>>import java.util.*;
>>>
>>>public class lp{
>>>
>>> public lp() throws ClassNotFoundException, FileNotFoundException, IOException
>>> {
>>> int last = 1000;
>>>
>>> GregorianCalendar day = new GregorianCalendar();
>>> String time = day.getTime().toString();
>>> int k=0;
>>> for (int i=0; i<last ; i++) {
>>> for (int p=0; p<last ; p++) {k=1+p;System.out.println(k);}
>>> }
>>>
>>> GregorianCalendar day1 = new GregorianCalendar();
>>> String time2 = day1.getTime().toString();
>>> System.out.println(time);
>>> System.out.println(time2 + "\n" + k);
>>>
>>>
>>> }
>>>
>>>public static void main(String[] args) {
>>> try {
>>> lp test = new lp();
>>> }
>>> catch (Exception ex) {
>>> System.err.println("Exception :" + ex);
>>> ex.printStackTrace();
>>> }
>>>}
>>>}
>>>
>>>
>>>
>>>------------------------------------------------------------------------
>>>
>>>/*
>>> Java equivalent
>>>*/
>>>import java.io.*;
>>>import java.sql.*;
>>>import java.util.*;
>>>
>>>public class pg{
>>> Connection conn;
>>> Statement stmt;
>>>
>>> public pg() throws ClassNotFoundException, FileNotFoundException, IOException, SQLException
>>> {
>>> Class.forName("org.postgresql.Driver");
>>> conn = DriverManager.getConnection("jdbc:postgresql:exkom", "andy", "");
>>> conn.setAutoCommit(true);
>>> stmt = conn.createStatement();
>>> int last = 10000;
>>> int res = stmt.executeUpdate("delete from junk");
>>>
>>> GregorianCalendar day = new GregorianCalendar();
>>> String time = day.getTime().toString();
>>>
>>> for (int i=0; i<last ; i++) {
>>> // try {
>>> res = stmt.executeUpdate("insert into junk values(" + i + ")");
>>>
>>> // } catch (SQLException e) {
>>> // System.out.println(e);
>>> // }
>>> }
>>>
>>> GregorianCalendar day1 = new GregorianCalendar();
>>> String time2 = day1.getTime().toString();
>>>// String time3 = day.getTime().toString();
>>> System.out.println(time);
>>> System.out.println(time2);
>>>// System.out.println(time3);
>>>
>>>// res.close();
>>> stmt.close();
>>> conn.close();
>>>
>>>
>>> }
>>>
>>>public static void main(String[] args) {
>>> try {
>>> pg test = new pg();
>>> }
>>> catch (Exception ex) {
>>> System.err.println("Exception :" + ex);
>>> ex.printStackTrace();
>>> }
>>>}
>>>}
>>>
>>>/**
>>>
>>>
>>>$conn = Pg::connectdb("dbname=exkom");
>>>die $conn->errorMessage unless PGRES_CONNECTION_OK eq $conn->status;
>>>
>>># print "Enter a state code :";
>>># $state_code = <STDIN>;
>>>
>>># chomp $state_code;
>>>$result = $conn->exec("delete from junk");
>>>$end = 10000;
>>>
>>>$t0 = new Benchmark;
>>>
>>>for ($i=1; $i < $end; $i++) {
>>> $result = $conn->exec("insert into junk values($i)");
>>>}
>>>
>>>$t1 = new Benchmark;
>>>$td = timediff($t1, $t0);
>>>print " the $end records took :", timestr($td) , "\n"
>>>**/
>>>
>>>
>>>------------------------------------------------------------------------
>>>
>>>
>>>---------------------------(end of broadcast)---------------------------
>>>TIP 3: if posting/reading through Usenet, please send an appropriate
>>>subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
>>>message can get through to the mailing list cleanly
>>>
>>> lp.java
>>>
>>> Content-Type:
>>>
>>> text/plain
>>> Content-Encoding:
>>>
>>> 7bit
>>>
>>>
>>> ------------------------------------------------------------------------
>>> lp.pl
>>>
>>> Content-Type:
>>>
>>> application/x-perl
>>> Content-Encoding:
>>>
>>> 7bit
>>>
>>>
>>> ------------------------------------------------------------------------
>>> pg.java
>>>
>>> Content-Type:
>>>
>>> text/plain
>>> Content-Encoding:
>>>
>>> 7bit
>>>
>>>
>>> ------------------------------------------------------------------------
>>> pg.pl
>>>
>>> Content-Type:
>>>
>>> application/x-perl
>>> Content-Encoding:
>>>
>>> 7bit
>>>
>>>
>>> ------------------------------------------------------------------------
>>> Part 1.6
>>>
>>> Content-Type:
>>>
>>> text/plain
>>> Content-Encoding:
>>>
>>> binary
>>>
>>>

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Rene Pijlman 2001-09-04 16:50:00 Why JDBC 1?
Previous Message chris markiewicz 2001-09-04 15:42:17 error - NOTICE: current transaction is aborted, queries ignored until end of transaction block