Re: RFC: Make new versions of pgjdbc Java8+

From: Álvaro Hernández Tortosa <aht(at)8kdata(dot)com>
To: Daniel Migowski <dmigowski(at)ikoffice(dot)de>, Dave Cramer <pg(at)fastcrypt(dot)com>
Cc: John R Pierce <pierce(at)hogranch(dot)com>, List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: RFC: Make new versions of pgjdbc Java8+
Date: 2017-04-03 18:53:24
Message-ID: 58330587-d79c-78e0-b239-2db7c59cecef@8kdata.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

On 03/04/17 20:47, Daniel Migowski wrote:
>
> Hello Alvaro,
>
> while the biggest performance hit currently in the driver is the
> switch to java.util.Logging (i will come up with numbers regarding
> that in a few days, comparing it to previous versions). Currently, and
> comparing to the 9.3 driver with the current driver, the Hibernate
> databases checks take twice the time than before! Even if some parts
> have improved (see changes in PGStream and VisibleBufferedInputStream,
> nice reuse of arrays there since 9.3) other things have changed to the
> bad.
>
> I also already did my tests regarding the stuff below, and concluded
> that in our company lambda’s are useful in the GUI, but as I said
> shouldn’t be used on the server. In my tests they were about 50%
> percent slower in the long run.
>
> Streams are the same thing… just look at the stack traces! Good for
> rarely used stuff, but honestly I prefer a nice loop where you see
> what is happening in terms of object creation over streams that might
> be concise, but are not needed. At least not for something you call
> potentially 100ths of times a second.
>

While I agree Lambdas and Streams should be used with care, I'm
still unconvinced that they really take a hit in performance (if the
compiler is not optimizing that, which most of the time does). I would
really love to see some numbers to prove my wrong in this respect. But I
don't see much trends towards not using them in the Java world (but the
contrary) and I talk to very performance conscious people.

> I like the switch to Java 8 to be able to use java build-in code vs.
> using external dependencies, so my upvote here. But please don’t start
> changing anything to Java 8 syntactic sugar if it even creates a
> single object more.
>

Object creation worries me, for example, when serializing and
deserializing data. That's what the real returns are in optimization.
Tiny object creation in non-repeated places is of no importance to me.

Cheers,

Álvaro

> Regards,
>
> Daniel Migowski
>
> *Von:*Álvaro Hernández Tortosa [mailto:aht(at)8kdata(dot)com]
> *Gesendet:* Montag, 3. April 2017 20:33
> *An:* Daniel Migowski <dmigowski(at)ikoffice(dot)de>; Dave Cramer
> <pg(at)fastcrypt(dot)com>
> *Cc:* John R Pierce <pierce(at)hogranch(dot)com>; List
> <pgsql-jdbc(at)postgresql(dot)org>
> *Betreff:* Re: AW: [JDBC] RFC: Make new versions of pgjdbc Java8+
>
> On 03/04/17 20:24, Daniel Migowski wrote:
>
> Hallo,
>
> in the name of performance, and that should be the main aspect for
> a database driver:
>
> ·Don’t use lambdas! They are useful in a GUI where a few
> milliseconds are no problem, but shouldn’t IMHO be used on the
> server. Inner classes are slower to load but execute faster!
>
> ·Don’t use streams when you can simply iterate over an array or a
> list. Unnecessary object creating just for the sake of readable
> code? Don’t do this in a database driver either!
>
> ·Optionals: Why create objects for nothing? I’d rather have an
> if-check for null instead garbage on the heap.
>
>
> Thank you for your thoughts.
>
> I have heard these objections sometimes. I more or less agree with
> some of them. But don't want to fall into premature optimization: do
> you have some numbers to back these claims? If there would be
> performance drawbacks for using these, are they comparable to other
> performance hits in the driver?
>
> Regards,
>
> Álvaro
>
>
>
>
> Just my thoughts.
>
> Regards,
>
> Daniel Migowski
>
> *Von:*pgsql-jdbc-owner(at)postgresql(dot)org
> <mailto:pgsql-jdbc-owner(at)postgresql(dot)org>
> [mailto:pgsql-jdbc-owner(at)postgresql(dot)org] *Im Auftrag von *Álvaro
> Hernández Tortosa
> *Gesendet:* Montag, 3. April 2017 13:36
> *An:* Dave Cramer <pg(at)fastcrypt(dot)com> <mailto:pg(at)fastcrypt(dot)com>
> *Cc:* John R Pierce <pierce(at)hogranch(dot)com>
> <mailto:pierce(at)hogranch(dot)com>; List <pgsql-jdbc(at)postgresql(dot)org>
> <mailto:pgsql-jdbc(at)postgresql(dot)org>
> *Betreff:* Re: [JDBC] RFC: Make new versions of pgjdbc Java8+
>
> On 03/04/17 13:05, Dave Cramer wrote:
>
> On 2 April 2017 at 19:03, Álvaro Hernández Tortosa
> <aht(at)8kdata(dot)com <mailto:aht(at)8kdata(dot)com>> wrote:
>
>
>
> On 03/04/17 00:56, John R Pierce wrote:
>
> On 4/2/2017 3:40 PM, Álvaro Hernández Tortosa wrote:
>
> - Java 6 EOLed 2/2013.
> - Java 7 EOLed 4/2015.
> - Java 8 was released 3 years ago, and brought
> significant improvements.
> - Java 9 will be (may be) released this year.
>
>
> isn't there a significant lag in version support by
> things like web services (j2ee, etc, as embedded in
> things like IBM WebSphere) ? j2ee 8 isn't even out
> yet. Pretty sure a whole lot of that space is still
> stuck back in Java 6 land.
>
>
>
> Those are not related things. You can perfectly run
> J2EE 6 servers with Java 8 (and indeed, it is beneficial).
>
>
> Álvaro
>
> --
>
> Álvaro Hernández Tortosa
>
>
> -----------
> <8K>data
>
> Alvaro,
>
> So why do you want to write in java 8 ?
>
>
>
> Not a comprehensive or ordered list, but a few reasons:
>
> - JDK comes with Base64 and cryptographic functions like PBKDF2
> that are needed for SCRAM. In Java6 you either implement yourself
> or pull external dependencies.
>
> - You can write conciser code (which improves significantly
> readability):
> * Lambas: anonymous classes. Callback-heavy code turns becomes
> readable.
> * Streams: unnecessary for loops and other goodies.
> * Optional: unnecessary ifs.
> * Since Java7: try-with-resources, 10_000 vs 10000 etc.
>
> - Reading Javadoc doesn't hurt my eyes ^_^
>
> - Time API, CompletableFuture.
>
> - Default and static methods in interfaces!
>
>
> Álvaro
>
>
>
> --
>
>
>
> Álvaro Hernández Tortosa
>
>
>
>
>
> -----------
>
> <8K>data
>
>
>
> --
> Álvaro Hernández Tortosa
> -----------
> <8K>data

--

Álvaro Hernández Tortosa

-----------
<8K>data

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Stephen Frost 2017-04-03 18:58:44 Re: RFC: Make new versions of pgjdbc Java8+
Previous Message Dave Cramer 2017-04-03 18:49:02 Re: RFC: Make new versions of pgjdbc Java8+