Re: JAVA vs PERL : PERL wins to postgreSQL

From: Kovács Péter <peter(dot)kovacs(at)sysdata(dot)siemens(dot)hu>
To: Barry Lind <barry(at)xythos(dot)com>, 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-05 06:44:26
Message-ID: 8A2DDD7ED7876A4698F6FF204F62CBFCD307C4@budg112a.sysdata.siemens.hu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

The obvious question is whether the PERL-script is also executing in one
transaction. If it is not, we're "cheating" setting autocommit off in the
JDBC-test app. (I did not look at the code, since I am not familiar with the
PGSQL's PERL-interface anyway.)

Peter

> -----Original Message-----
> From: Barry Lind [mailto:barry(at)xythos(dot)com]
> Sent: Tuesday, September 04, 2001 6:49 PM
> To: andy
> Cc: pgsql-jdbc(at)postgresql(dot)org
> Subject: Re: [JDBC] JAVA vs PERL : PERL wins to postgreSQL
>
>
> 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
> >>>
> >>>
>
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
http://www.postgresql.org/users-lounge/docs/faq.html

Browse pgsql-jdbc by date

  From Date Subject
Next Message chris markiewicz 2001-09-05 11:09:49 Re: error - NOTICE: current transaction...MORE DETAIL...
Previous Message Thomas O'Dowd 2001-09-05 00:41:54 Re: driver source code indentation