On Mon, May 18, 2015 at 10:34 PM, Eric Lease Morgan <[log in to unmask]> wrote:
> On May 18, 2015, at 9:23 PM, Galen Charlton <[log in to unmask]> wrote:
>
> >> I have two scripts, attached. They do EXACTLY the same thing
> >> in almost EXACTLY the same manner, but the Python script is
> >> almost 25 times slower than the Perl script:
> >
> > I'm no Python expert, but I think that the difference is much more
> > likely due to which JSON processor is being used. I suspect your Perl
> > environment has the JSON::XS module, which is written in C, is fast,
> > and is automatically invoked (if present) by "use JSON;".
> >
> > In contrast, I believe that the Python "json" library is written in
> > Python itself. I tried swapping in cjson and UltraJSON [1] in place
> > of "json" in your Python script, and in both cases it ran rather
> > faster.
> >
> > [1] https://github.com/esnme/ultrajson
>
>
> Thank you. After using the Python module ujson instead of json, the speed
> of my two scripts is now all but equal. Whew! —Eric
>
This is kind of weird, since the stdlib json module should be using a C
extension (from _json). ultrajson does claim to be faster than simplejson
(which is the library that got incorporated into the python 2.6 stdlib as
"json"), but I wouldn't have expected it to make that much of a difference.
Out of curiosity, does "import _json" work on your Python? I'm wondering if
the C extension didn't build for some reason.
|