From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: scame via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#47419: 27.1; slow running of snippet which reorders the file Date: Fri, 26 Mar 2021 19:56:53 +0000 Message-ID: <61UDKwhxkYX18O3D1KM_95yXHL-aAqQ8EFR-k0xhF9q3PGOhe2o2USottxht6UbCzZ_D0eDD7xLB0jI28-04XeW4N2s3iLnil176fW89rC0=@protonmail.com> Reply-To: scame Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_iVtHRLNbx1Df3SzaoIoT5Rxm1rGg81oIckyr0BcGk" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="3796"; mail-complaints-to="usenet@ciao.gmane.io" To: 47419@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Mar 26 21:23:41 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lPszc-0000rS-Qc for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 26 Mar 2021 21:23:41 +0100 Original-Received: from localhost ([::1]:35952 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPszb-000295-N2 for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 26 Mar 2021 16:23:39 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:57578) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPsao-0005Ns-B8 for bug-gnu-emacs@gnu.org; Fri, 26 Mar 2021 15:58:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:59241) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lPsao-0004mk-3v for bug-gnu-emacs@gnu.org; Fri, 26 Mar 2021 15:58:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lPsao-0001BW-1j for bug-gnu-emacs@gnu.org; Fri, 26 Mar 2021 15:58:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: scame Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 26 Mar 2021 19:58:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 47419 X-GNU-PR-Package: emacs X-Debbugs-Original-To: "scame via Bug reports for GNU Emacs, the Swiss army knife of text editors" Original-Received: via spool by submit@debbugs.gnu.org id=B.16167886324481 (code B ref -1); Fri, 26 Mar 2021 19:58:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 26 Mar 2021 19:57:12 +0000 Original-Received: from localhost ([127.0.0.1]:42551 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lPsa0-0001AC-Cu for submit@debbugs.gnu.org; Fri, 26 Mar 2021 15:57:12 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:46826) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lPsZz-0001A4-0s for submit@debbugs.gnu.org; Fri, 26 Mar 2021 15:57:11 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:57380) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPsZy-0004W5-J3 for bug-gnu-emacs@gnu.org; Fri, 26 Mar 2021 15:57:10 -0400 Original-Received: from mail4.protonmail.ch ([185.70.40.27]:63112) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPsZu-0004CV-1A for bug-gnu-emacs@gnu.org; Fri, 26 Mar 2021 15:57:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail; t=1616788622; bh=iySsvPqSgNtse+qRWb6/zqqqv0gsl6kJryUsxBcnob0=; h=Date:To:From:Reply-To:Subject:From; b=s0RB9E6Z0+OLGnEm9Ch2ZB2/hzGBrBIAEkF3KY5vDt3dPKdPPw5cMjygCqLOU+kW8 BRMXsCXCo3+sI1ApqSDfm2jSoefHFMaiYdo2z2PvngEsQaxbcc8AiDrWZlZimlz0OT Ck6XoZxGq+zjASfkVrcoPCcttVKKgO1FCo9O5CpQ= Received-SPF: pass client-ip=185.70.40.27; envelope-from=laszlomail@protonmail.com; helo=mail4.protonmail.ch X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" X-ACL-Warn: , scame Xref: news.gmane.io gmane.emacs.bugs:203070 Archived-At: This is a multi-part message in MIME format. --b1_iVtHRLNbx1Df3SzaoIoT5Rxm1rGg81oIckyr0BcGk Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable As discussed on emacs-help=C2=A0 I'm posting this example here which reorders the file and runs slowly. Though it's an sql dump file with long lines, the file is navigable without any problem or slowness. Only this snippet runs slowly. Here's the snippet: (progn (goto-char (point-min)) (when (search-forward "INSERT INTO `test2` (`aa`, `bb`) VALUES" nil t) (beginning-of-line) (while (looking-at "INSERT INTO `test2`.+,\\([0-9]+\\));") (let ((item (match-string 1)) (line (buffer-substring (line-beginning-position) (line-end-pos= ition)))) (message item) (save-excursion (re-search-backward (concat "INSERT INTO `test1`.+" "VALUES (" item ",")) (end-of-line) (insert "\n" line)) (delete-region (line-beginning-position) (1+ (line-end-position))) )))) And the example file to run it on is attached. (anonymized sql dump) --b1_iVtHRLNbx1Df3SzaoIoT5Rxm1rGg81oIckyr0BcGk Content-Type: application/x-zip-compressed; name=dump.zip Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=dump.zip 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 PITldJJZTieZZZ+PWfb5mGWfj1n2+Zhln49Z9vmYOz0aZV6jrMSYZSXGLCsxYlD5NafsiTHLnhiz 7Ikxy54Ys6zEmGUlxiwHjcyyvcUsaz5m2d5ilu0tZjk8ZZY9MWbZdGKWTSdm2XRilk0n1q/wf3oc dJWgE4J2atNP0C6J2CURuySi/HPLLOsqs6yrzLKucm5DvFIYUK0yn7vKfO4q87mrzOeuMuW3ypTf KrN3q8zerW95cr/lyX0YtNOf9zuofOa9ymfej4NODwpTSU+D/sxeuSOuckdcpS8vW/uvO/x4+zjo KkE/f17pWMpswyqzDavMNqwy27DuVRKxSiJWSUQKCnXuKhvur7Lh/ip7568yg7LGp7TpU9r0KW0K KzEeX+knqDzuZdpllWmXVaZdVpl2WWXaZZVpl1WmXZ4G7U+/UukjyifRq3wSvcon0TGoDHPK97mr bO2/yqTVKpNWq0xarTJptcqk1ZrlyZ3lyZ3leZrlyZ1lZFm29l9la/9VtvZfZWv/te7Spru0qTy5 q/QRq5RC5YvtVb7YXuXj61U+VF7lQ+VVPlRe5UPlVT5UXmUac5VpzFWmMVeZxlxlGnOViYNVJg5W mTh4GrRTm/4WtMuHlbt8WLnLh5VPg3Zq00/QKolYJRGrJGKVRKySiFMScUoiTknEKYkIZcMunwbu 8mngLl/5PQ3aqU0/Qd+SiG9JxLck4lvaNEqbRmnTKG0a5Z87SiJ2ScQuiQhDt12mx3aZHttlpmuX g7l3OZh7l4O5dzmYe5eDuXeZHttleuxx0AlBO7Xpd1CZU9tlTm2X6bGnQTu16SeovD7L94S7fOW3 yx7Su+whvcse0rtsB72v8lK7ykutfEa3y97Eu+xNvMvexLvsTRyvdJUrXSXl5f1Uvojb5eO2XT5u 2+Xjtn2nG3aWP2+WP2+W22iW2yhdqbwJR3ncR3ncR3kIR3ncR3nVjHKXj3KXj1JrjFJrjPI8lWnM XaYx90g3bPnlo2xxvcs05i67Ve+yW/Uuu1XvcpL8Lltc77IL8i67IO8yYbrL1OzjK/0EleepTC7u Mrm4y+TiLpOLu5wkv8tJ8o+DTgjaqU0/QVdJxFUScZVElIFvmZrdZUZylxnJXfaQfhq0P/lKu/RG ZZvhXab8dtldd5fddXfZXXeX3XWfBu3Upp+g8iYshyPvcs7x46CfNpXRcvm4bZeP23b5Tm2XvYl3 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 --b1_iVtHRLNbx1Df3SzaoIoT5Rxm1rGg81oIckyr0BcGk--