On Thu, Aug 1, 2013 at 4:06 AM, CHRIS BAILEY <cpmbai...@btinternet.com>wrote:

> I think my package is based on the one from the DBX suite. It has a few
> edits, some of which I'm confident should go in and others just for my
> needs which probably aren't fit to.
>

Ok, please let me know how that goes.


> Disappointly, I got the psyco test wrong and it is only taking 30m/s :( I
> guess this is the difference when something is implemented on top of C and
> libpq (I presume)
>

mmm maybe. For that you could compare OpenDBXDriver with Postgres, but you
will need OpenDBX lib and FFI.


>
>   ------------------------------
>  *From:* Mariano Martinez Peck <marianop...@gmail.com>
> *To:* Any question about pharo is welcome <pharo-users@lists.pharo.org>
> *Sent:* Wednesday, 31 July 2013, 22:40
> *Subject:* Re: [Pharo-users] Pharo performance
>
>
>
>
> On Wed, Jul 31, 2013 at 6:32 PM, Chris <cpmbai...@btinternet.com> wrote:
>
> It definitely seems to be because most things in the V2 driver are coming
> in as strings and then being converted. Running the same query on the three
> systems gives the following for a 65000 double array
>
> PGV2 770m/s
> PGV3 200m/s
> Psycopg2 130m/s
>
> Now I just need to find out how to get PGV3 as the backend for Glorp!
>
>
> PLease please please use the Glorp version you get from the DBX suite.
> You need to create a subclass of DatabaseDriver. You can take a look
> to NativePostgresDriver and create a similar one for V3.
> I would also like to have Glorp + PostgresV3 running.
>
> Also...we should somehow use NativePostgresPoolingDriver and
> NativePostgresConnectionPool for V3... we need some refactor here...
>
> We should join forces!!
>
>
> Cheers
> Chris
>
>
>  Hi Yanni,
>
> On 30 Jul 2013, at 05:17, Yanni Chiu <ya...@rogers.com> wrote:
>
>  On 29/07/13 7:08 PM, Sven Van Caekenberghe wrote:
>
> The explanation for the slowdown must be in the PgV2 driver.
>
> The PgV2 protocol is described at:
>   http://www.postgresql.org/**docs/7.1/static/protocol-**
> message-formats.html<http://www.postgresql.org/docs/7.1/static/protocol-message-formats.html>
>
> Have a glance at the "AsciiRow" and "BinaryRow" message formats. The
> driver reads the data off the socket, parsing the the data, as described as
> described by the message format. With the V2 protocol design, you have to
> read the result row, one field at a time.
>
> IIUC, in the newer V3? protocol, the AsciiRow/BinaryRow message is
> replaced by a DataRow message. The DataRow message has the message size
> included, which could allow the driver to read the entire set of fields for
> one data row, using a single socket read (or a few buffer sized reads).
>
> I recall seeing an experimental V3 protocol implementation, a few years
> back - sorry, no links handy. It would be nice to see some benchmarks.
>
> Hope that helps.
>
> Thanks for the response.
>
> I believe the V3 project is here http://www.squeaksource.com/**
> PostgresV3.html <http://www.squeaksource.com/PostgresV3.html>.
>
> Now, I probably spoke too fast and should have taken Mariano's advice to
> never speculate and first measure. Here is my quick test that, for me,
> shows that PostgresV2 seems more than fast enough (something that I had
> experienced before without doing benchmarks).
>
> [ self execute: 'select longitude,latitude from log_data limit 10000;' ]
> timeToRun.
>
> => 76 ms
>
> [ self execute: 'select longitude,latitude from log_data limit 100000;' ]
> timeToRun.
>
> => 765 ms
>
> This is querying for 2 floats from a huge table, over the network. Pretty
> fast ;-)
>
> So, back to Chris: what exactly are you doing that is (so) slow ?
>
> Anyway, thanks Yanni for all your work on the existing driver !
>
> Sven
>
> --
> Sven Van Caekenberghe
> Proudly supporting Pharo
> http://pharo.org
> http://association.pharo.org
> http://consortium.pharo.org
>
>
>
>
>
>
>
>
>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
>
>


-- 
Mariano
http://marianopeck.wordpress.com

Reply via email to