emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: String encoding in json.c


From: Eli Zaretskii
Subject: Re: String encoding in json.c
Date: Sat, 23 Dec 2017 16:43:30 +0200

> From: Philipp Stephani <address@hidden>
> Date: Sat, 23 Dec 2017 14:26:09 +0000
> 
> I've benchmarked serialization and parsing of JSON with and without explicit 
> encoding. I've found that leaving
> out the coding makes both operations significantly faster – from a speedup of 
> a factor of 1.11 ± 0.06 for
> parsing canada.json to 1.57 ± 0.08 for serializing twitter.json. Other 
> speedups are in between, but the
> speedup is always significant (to at least one standard deviation). All unit 
> tests pass when leaving out the
> coding steps – which isn't surprising given that currently the coding 
> operations are expensive no-ops.

The coding operations are "expensive no-ops" except when they aren't,
and that is exactly when we need their 'expensive" parts.

> Therefore I'd suggest to document the internal string encoding in lisp.h or 
> character.h and remove the explicit
> coding in json.c and emacs-module.c. It's very unlikely that the internal 
> string encoding will change frequently,
> and if so, the unit tests should catch potential issues caused by that.

As I've already said, I don't think this particular case should be an
exception wrt to how Emacs behaves with external strings everywhere
else.  We suffer similar slow-downs in those other places as well, and
IMO this is a small penalty to pay for making sure our objects are
valid and won't crash Emacs.

The main purpose of Emacs is to be an efficient editor, so if we care
about the slow-down of code conversions, we should first and foremost
speed up reading and writing files.  JSON conversion, with all due
respect to them, are not the main business for us, and I'm not even
sure JSON objects will frequently be as large as files our users visit
all the time.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]