From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.bugs Subject: bug#31138: Native json slower than json.el Date: Wed, 24 Apr 2019 23:25:32 +0300 Message-ID: <429a19a3-52aa-02d1-0bd0-77c27c6811d7@yandex.ru> References: <87sh806xwa.fsf@chapu.is> <83a7gjaen6.fsf@gnu.org> <83ftqa8qsg.fsf@gnu.org> <83muki6y6r.fsf@gnu.org> <4b8c6799-e845-768b-749c-f2a883ab89f8@yandex.ru> <83h8aq6v6a.fsf@gnu.org> <834l6q6ozn.fsf@gnu.org> <83zhoi59ao.fsf@gnu.org> <83wojm57sl.fsf@gnu.org> <83ftq96azk.fsf@gnu.org> <83wojk534g.fsf@gnu.org> <6308ceff-479b-2ce7-2072-41e683978c7c@yandex.ru> <83h8ao4vl0.fsf@gnu.org> <835zr32x2m.fsf@gnu.org> <8f3318e9-25bd-c7af-20dd-ed78d2a92efd@yandex.ru> <831s1r2uzx.fsf@gnu.org> <83wojj1ep8.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="152629"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 Cc: sebastien@chapu.is, yyoncho@gmail.com, 31138@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Apr 24 22:28:08 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hJOUw-000dZO-OS for geb-bug-gnu-emacs@m.gmane.org; Wed, 24 Apr 2019 22:28:07 +0200 Original-Received: from localhost ([127.0.0.1]:46841 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hJOUv-00035h-Eu for geb-bug-gnu-emacs@m.gmane.org; Wed, 24 Apr 2019 16:28:05 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:38691) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hJOUk-000358-8m for bug-gnu-emacs@gnu.org; Wed, 24 Apr 2019 16:27:55 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hJOSw-0001m7-Au for bug-gnu-emacs@gnu.org; Wed, 24 Apr 2019 16:26:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:43050) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hJOSw-0001lz-7O for bug-gnu-emacs@gnu.org; Wed, 24 Apr 2019 16:26:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hJOSv-0008DV-Vr for bug-gnu-emacs@gnu.org; Wed, 24 Apr 2019 16:26:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 24 Apr 2019 20:26:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31138 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: moreinfo Original-Received: via spool by 31138-submit@debbugs.gnu.org id=B31138.155613754531562 (code B ref 31138); Wed, 24 Apr 2019 20:26:01 +0000 Original-Received: (at 31138) by debbugs.gnu.org; 24 Apr 2019 20:25:45 +0000 Original-Received: from localhost ([127.0.0.1]:56594 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hJOSf-0008D0-8S for submit@debbugs.gnu.org; Wed, 24 Apr 2019 16:25:45 -0400 Original-Received: from mail-lj1-f169.google.com ([209.85.208.169]:36719) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hJOSd-0008Cj-Rh for 31138@debbugs.gnu.org; Wed, 24 Apr 2019 16:25:44 -0400 Original-Received: by mail-lj1-f169.google.com with SMTP id l6so3323758ljb.3 for <31138@debbugs.gnu.org>; Wed, 24 Apr 2019 13:25:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=adQbGWTpcMRGs2pN24teOaH1EWsaxWmkdA9jvfxL1X0=; b=Tl+/4/rgcB2zRTgi7R66cUdNmA4z0Z/siJ9QV+jtNxh+YQm7xGYHzfcmBdX2QHAVW3 1D9uJL97U4P0k9Jiumcevb4BJLXPGNBzvHdIy+QabQ0noellv3JPGioyBbEIZ2k85jA1 sPm4ESkkvjEskBS7eLy5CHpV51bSMokhc3uYcVkzXPdgSVx1xYPTNLh6vBVil9cnVzFS KucH2UaZ2Aju1NoTsEfmFzukhQtsew4ZufkEB9fUmuwpzGnCzurIUWt3lunAkAb1J8z5 Vqc8SL3dk5MXEkcZp1mlTcLZwWCltboO0r2uxBM/WjVHy8J0Y1ypQT6TWCZZwVGP9xYr aUPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=adQbGWTpcMRGs2pN24teOaH1EWsaxWmkdA9jvfxL1X0=; b=JSjiXYXQaQ+o+Aq3zsJYFYk7finnc4rmxobei9bTGnwwg9WZ5g6uk2AIuSpWREHN/l P5Ou6IWaIDmtslA07JlAD2QYJtsR61xMNouFXsNElEQz7xEsjwXt+3TAnK3kYMpXZm1r KH2fvT6E7DGO54/OZAb6DwKjBPDN9E8/1qIEcaGAfNQvw5c11MJBoCMC+LB0MUefliVs vITYHPBzm2YOsIrW8XAaI+/Zdcy5fJvBQpqGr7wkOdV2W/v0J3dXLQ/zj5oJM/TJ6Ook L+D7m32eoP1yq8DVu/8tr2ezHVZqhFJM/P/uLqBMY79gvFXYJAUyrtZsfs3yC8D9z9AD //5w== X-Gm-Message-State: APjAAAVVWKVehERasRtfGYQFmlojZT/X6v8H+4kpIyIBt04vexiLHVpa vs8mhajxrdU3jkx2R4tAW07hWMc6 X-Google-Smtp-Source: APXvYqz38rKH2wumy0qKlf+I1gGL62XP94ASwxM7sNaJGggaYCwjsOdRFvI9QRdGK0LWmEn1ILFaRQ== X-Received: by 2002:a2e:7e11:: with SMTP id z17mr4119705ljc.77.1556137536010; Wed, 24 Apr 2019 13:25:36 -0700 (PDT) Original-Received: from [192.168.1.3] ([185.105.174.23]) by smtp.googlemail.com with ESMTPSA id w198sm4555866lff.10.2019.04.24.13.25.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 Apr 2019 13:25:34 -0700 (PDT) In-Reply-To: <83wojj1ep8.fsf@gnu.org> Content-Language: en-US X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:158201 Archived-At: On 24.04.2019 20:43, Eli Zaretskii wrote: >> But what conversion primitives does that low-level code use? >> code_convert_region? > > AFAICS, it uses decode_coding_c_string. Incoming data doesn't have to > be UTF-8, mind you, it could be anything, including an unknown > encoding that needs detecting, and only the detection tells us it's > UTF-8. All right, thank you. If I ever have anything solid to propose, I will do so later. >> Relying on the library is probably faster. > > Why faster? Because the library will perform its validation anyway, during normal execution. Any extra validation work Emacs performs, will take time on top of that (of course, I don't know how much time). > And more importantly, will the error indication be useful enough to > the Lisp program that triggered it? If we signal an error, we can > make sure of that. We still signal errors if the library returns an error code. More importantly, we also perform additional validation ourselves if something goes wrong. See the pieces of code like if (json == NULL) { /* A failure can be caused either by an invalid string or by low memory. */ json_check_utf8 (encoded); json_out_of_memory (); } Anyway, speeding up encoding is not as important as it was with decoding, because at least in this case Lisp programs can control how much data is sent. So let's not spend too much time and effort on it.