438 karma · joined September 20, 2012
Previously co-founder and CTO of Gel Data [1].
[1] https://geldata.com
[ my public key: https://keybase.io/elprans; my proof: https://keybase.io/elprans/sigs/p0bjVrvsPB2J-0pE_ZgpeT-gli6jsZ45wHgeBaMKNNY ]
If you are using Windows 10, your missing Atom processes will be under Background Processes in Task Manager. For the sake of the argument, I just did a fresh install of Atom and this is what I see on the first run: https://i.imgur.com/0ZRSumF.png. ~220MiB (no files open, zero extensions).
Here are stats on my (Linux) box:
* atom - ~500MiB (one window)
* slack - ~816MiB
* chrome - ~935MiB (two tabs + hangouts)
* google music electron app - ~500MiB
Also, your anecdotal data is arguably biased as well.
My take is that many sources, including the ones linked to in the tweet's replies point to solid growth in Python 3 adoption. Python3 might not have overtaken Python 2 overall, but it's very far from being "dead".
It is not. odictobject.c has not been touched at all yet. Also, OrderedDict defines several methods that ordinary dict does not (and unlikely ever will).
[1] https://github.com/MagicStack/MagicPython [2] https://github.com/Microsoft/vscode/commit/f4967722fa02471da...
That said, once PyPy supports 3.5, we will consider making a CFFI binding.
[1] https://github.com/MagicStack/asyncpg/blob/master/asyncpg/pr...
I see your point. Nothing is really "locked away". The protocol parser and data codecs in asyncpg are independent from the I/O model and loop semantics. With effort, it's possible to build a sync interface on top. It's just not a priority, as our cases are async.
OK, I ran the asyncio suite (with uvloop event loop):
Python3.5.2 asyncio+psycopg+uvloop -- avg 8356.84 recs/sec
Really not that slower. There is also an important detail that you forget to mention: the threaded benchmark uses notably more CPU time (about 30% more).
I created an asyncpg suite for your bigdata benchmark (https://bitbucket.org/zzzeek/bigdata). Here are the results obtained from running it on my laptop against local PostgreSQL 9.5.
300 connections:
Python3.5.2 threads -- avg 9798.16 recs/sec
Python3.5.2 gevent -- avg 9677.84 recs/sec
Python3.5.2 uvloop/asyncpg -- avg 11558.24 r/sec
The modified suite is here: https://github.com/elprans/bigdataWe in no way question the merits and the stability if psycopg2. We created asyncpg to solve the challenges we face in the development of EdgeDB, it's not just a toy project for fun.
> Does your driver seamlessly handle reading and writing of three-dimensional arrays of JSONB structures, and arrays of custom enumerated types ?
Yes it does.
> edit:
> > but efficient implementation of the binary type I/O and the protocol itself.
> that's great too! you don't need async for that either.
> I guess I am frustrated that you folks put all this work into a great driver and then locked it in the largely useless dungeon of asyncio, where all the libraries are totally useless to those of us who don't think node.js is the programming model for all cases.
I'm sorry to hear that. Nobody forces you to use asyncio or asyncpg. But please don't try to claim that something is a "useless dungeon" simply because you disagree.
Prepared statements were used in all benchmarks where supported. Please don't dismiss the results so easily. The source of performance increases here is not the use of prepared statements, but efficient implementation of the binary type I/O and the protocol itself.
> I'd be very wary of a new PG driver especially one that implements the wire protocol itself. > pg8000 does this, and also does prepared statements, and while it doesn't have the speed approach here, it also has serious problems supporting all the features and datatypes that psycopg2 does.
asyncpg supports 100% of pg_catalog types (we have a test for that.) Additionally, psycopg2 doesn't _really_ support all the features and datatypes and simply returns unparsed text in many cases. You have to write lots of typecasters to convince it otherwise.
> It's been around for years and reliably breaks on many Postgresql features (and Postgresql introduces new features like a firehose). Writing and maintaining a driver for Postgresql is not an easy task.
Please. Simply because something has been around is not the reason to stiffle new development and innovation.
Pull requests to https://github.com/MagicStack/pgbench are welcome :-)