From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: =?UTF-8?Q?Cl=C3=A9ment?= Pit--Claudel Newsgroups: gmane.emacs.bugs Subject: bug#21028: Performance regression in revision af1a69f4d17a482c359d98c00ef86fac835b5fac (Apr 2014). Date: Sat, 18 Jul 2015 13:08:09 -0700 Message-ID: <55AAB229.4070108@live.com> References: <559F9FAF.8090708@live.com> <83egkgb2wo.fsf@gnu.org> <559FF8F6.2060209@live.com> <55A652E4.5000606@yandex.ru> <55AA2942.8070706@live.com> <55AA3580.7040905@live.com> <83egk5671e.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="92QCdOjCxGwOBWKEVNOpBeNgojV7bRVh1" X-Trace: ger.gmane.org 1437250165 6489 80.91.229.3 (18 Jul 2015 20:09:25 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 18 Jul 2015 20:09:25 +0000 (UTC) Cc: 21028@debbugs.gnu.org, dmantipov@yandex.ru To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Jul 18 22:09:13 2015 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1ZGYQ4-00073S-25 for geb-bug-gnu-emacs@m.gmane.org; Sat, 18 Jul 2015 22:09:12 +0200 Original-Received: from localhost ([::1]:49580 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZGYQ3-0004Mh-7R for geb-bug-gnu-emacs@m.gmane.org; Sat, 18 Jul 2015 16:09:11 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:46025) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZGYPy-0004LW-4o for bug-gnu-emacs@gnu.org; Sat, 18 Jul 2015 16:09:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZGYPu-0001dM-Rv for bug-gnu-emacs@gnu.org; Sat, 18 Jul 2015 16:09:06 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:51919) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZGYPu-0001dH-PE for bug-gnu-emacs@gnu.org; Sat, 18 Jul 2015 16:09:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1ZGYPu-0004aO-Em for bug-gnu-emacs@gnu.org; Sat, 18 Jul 2015 16:09:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: =?UTF-8?Q?Cl=C3=A9ment?= Pit--Claudel Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 18 Jul 2015 20:09:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 21028 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 21028-submit@debbugs.gnu.org id=B21028.143725010617576 (code B ref 21028); Sat, 18 Jul 2015 20:09:02 +0000 Original-Received: (at 21028) by debbugs.gnu.org; 18 Jul 2015 20:08:26 +0000 Original-Received: from localhost ([127.0.0.1]:53365 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZGYPJ-0004ZP-1C for submit@debbugs.gnu.org; Sat, 18 Jul 2015 16:08:25 -0400 Original-Received: from mout.kundenserver.de ([212.227.17.24]:52165) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZGYPF-0004ZA-Oz for 21028@debbugs.gnu.org; Sat, 18 Jul 2015 16:08:23 -0400 Original-Received: from [172.20.14.53] ([12.10.78.5]) by mrelayeu.kundenserver.de (mreue103) with ESMTPSA (Nemesis) id 0M1hZS-1Yw8yC0BNC-00tihv; Sat, 18 Jul 2015 22:08:14 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 In-Reply-To: <83egk5671e.fsf@gnu.org> X-Provags-ID: V03:K0:qTm67CIS5t0jKd0J6iYFWTz1Hhe6GkdTpW+Rhv2LRRftyU9RrUA CZt8k1L9y9VKpVFCqsRdg0NIIDb6j7FHoJYSUHywCfRIc9rHBArYyY8a9+Ddgw+5ITho6xW F1i+g90Fv5Tb1vdF2OsVyofVZEEBnGGBRdresK/0szLWor90jwd77M3HxcbDJDXjItwwR4B /D70YrjDksz2wYcgxG/Cg== X-UI-Out-Filterresults: notjunk:1;V01:K0:VvmAdopE8aY=:9HKyWaN28/fxrRwOl0zbWw ztlBcBAXKRbxRD4pxO5tdEAX+hoSx+Wgeqlszu6ioVgwwQSFPSjvkQ6/aoJ0oZTUGoA8jrkZN Ei2gNU6I+1IqJBR60nhdjKXE3JKoh8Hwpn1B+dtAkDgz7wZMllJQuD3h7bBN9kczkevqvwjcl SZgMAGICBQJqVT1uANJm9k/yFVot3gFHqpitwHShfrUAAg3M4S4gT75r7Zq9+PxN9+M2Ve7vv GmpAFchS1ePeaGFmIzsLG6x5IAb/7+4D5FetHR6Pm90UIHIdU+MqSDucSrUSyBykB9CSBeJSS c3Dll/ukzYtyeAHqA8bQ2F4U5qqLWw0nHsXPTy7J2/eVR1/YZUH/4VeYvA7Wv9QJM/ibfyta8 00Dl451zduFQtgdWr47nR57WhX/tT/RkofVVHtNTAn9FEtR2j/JS7ScPN6TElQUcnd8fbIaEr FXmINy8DVjrDDzeNkQrPTy5ibopD/DJ2iP6vhqlCboYaAcf27FGQoYIag+UEIr0t1PLkUE8a6 3uqPvaP6G+VPwehp9Sr4eAumBh5F4Prgnc9uP9vpfZeZVOlGwCBjBbymdfoH+CzRhTCs10DO/ +sAaUp7J16D93LMNmNO0+q2Sj1hHb1B/wf61oDiXrv8t4vke4P97p8bcc9SVWpddoe20jiDgf DTgllnY5o4KepdLSKBQ8+E1gT X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.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-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:105030 Archived-At: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --92QCdOjCxGwOBWKEVNOpBeNgojV7bRVh1 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 07/18/2015 04:26 AM, Eli Zaretskii wrote: >> Date: Sat, 18 Jul 2015 04:16:16 -0700 >> From: Cl=C3=A9ment Pit--Claudel >> >> CC: Eli Zaretskii , 21028@debbugs.gnu.org >> >> I've spent a bit more time looking into this. The problem is due to th= e following three lines being conditioned on `!NILP(val)`: (that's around= line 2780 of src/font.c) >> >> Lisp_Object copy =3D copy_font_spec (scratch_font_spec); >> ASET (copy, FONT_TYPE_INDEX, driver_list->driver->type); >> XSETCDR (cache, Fcons (Fcons (copy, val), XCDR (cache))); >> >> Before af1a69f, these lines were always run. In af1a69f, they only run= if `val` is non nil, causing the regression: on master, moving them back= out of the if statement fixes the problem. >=20 > Thanks. Do you understand how doing something only sometimes could be > slower than doing it always? My guess would be that these lines themselves aren't slow, but omitting t= hem makes things slow. In addition to the two perf traces that I sent, he= re are the two most common stack traces that I get when I interrupt the t= ext insertion loop using [(gdb) run -Q --eval "(progn (dotimes (_ 10) (se= t-fontset-font t 'unicode (font-spec :name \"Arial\") nil 'append)) (redi= splay t) (dotimes (_ 500) (insert \"=E6=97=A5=E6=9C=AC=E5=9B=BD\n\")))"] * 3/4 of the time I get this one: (gdb) backtrace #0 0x00007ffff164912d in poll () at ../sysdeps/unix/syscall-template.S:8= 1 #1 0x00007fffee12db72 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.= 1 #2 0x00007fffee12f3ff in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.= 1 #3 0x00007fffee12f512 in xcb_wait_for_reply () from /usr/lib/x86_64-linu= x-gnu/libxcb.so.1 #4 0x00007ffff4c9948f in _XReply () from /usr/lib/x86_64-linux-gnu/libX1= 1.so.6 #5 0x00007ffff4c950cd in XSync () from /usr/lib/x86_64-linux-gnu/libX11.= so.6 #6 0x00000000004bdfb5 in x_catch_errors (dpy=3Ddpy@entry=3D0xbe58d0) at = xterm.c:7471 #7 0x00000000005b06f9 in xfont_list_pattern (display=3Ddisplay@entry=3D0= xbe58d0,=20 pattern=3Dpattern@entry=3D0x7fffffff6f20 "Arial", registry=3Dregistry= @entry=3D12339538, script=3Dscript@entry=3D12108082) at xfont.c:367 #8 0x00000000005b10ae in xfont_list (f=3D, spec=3D1226156= 5) at xfont.c:560 #9 0x000000000056a879 in font_list_entities (f=3Df@entry=3D0x112a4b8, sp= ec=3Dspec@entry=3D18635693) at font.c:2756 #10 0x000000000056b242 in font_find_for_lface (f=3Df@entry=3D0x112a4b8, a= ttrs=3Dattrs@entry=3D0x1807320,=20 spec=3D, c=3Dc@entry=3D22269) at font.c:3232 #11 0x00000000005b9481 in fontset_find_font (fontset=3D19770717, c=3Dc@en= try=3D22269, face=3Dface@entry=3D0x1807320,=20 id=3Did@entry=3D-1, fallback=3Dfallback@entry=3Dfalse) at fontset.c:6= 81 #12 0x00000000005b9940 in fontset_font (fontset=3Dfontset@entry=3D1824985= 3, c=3Dc@entry=3D22269, face=3Dface@entry=3D0x1807320,=20 id=3D-1) at fontset.c:754 #13 0x00000000005ba3ea in face_for_char (f=3D0x112a4b8, face=3Dface@entry= =3D0x1807320, c=3D22269, pos=3D,=20 object=3D) at fontset.c:956 #14 0x000000000043ff68 in get_next_display_element (it=3Dit@entry=3D0x7ff= fffff8ff0) at xdisp.c:7064 #15 0x00000000004456e0 in display_line (it=3Dit@entry=3D0x7fffffff8ff0) a= t xdisp.c:19867 #16 0x000000000044962a in try_window (window=3Dwindow@entry=3D18003149, p= os=3D..., flags=3Dflags@entry=3D0) at xdisp.c:16685 #17 0x000000000045d312 in redisplay_window (window=3D18003149, just_this_= one_p=3Djust_this_one_p@entry=3Dfalse) at xdisp.c:16367 #18 0x0000000000461193 in redisplay_window_0 (window=3Dwindow@entry=3D180= 03149) at xdisp.c:14157 #19 0x00000000005545a6 in internal_condition_case_1 (bfun=3Dbfun@entry=3D= 0x461160 , arg=3D18003149,=20 handlers=3D, hfun=3Dhfun@entry=3D0x42b360 ) at eval.c:1378 #20 0x000000000042fbfe in redisplay_windows (window=3D18003149) at xdisp.= c:14137 #21 0x000000000044dfb1 in redisplay_internal () at xdisp.c:13736 #22 0x000000000044fdd5 in redisplay () at xdisp.c:13022 #23 0x00000000004ef9e1 in read_char (commandflag=3D1, map=3Dmap@entry=3D1= 9387718, prev_event=3D12108082,=20 used_mouse_menu=3Dused_mouse_menu@entry=3D0x7fffffffd71b, end_time=3D= end_time@entry=3D0x0) at keyboard.c:2569 #24 0x00000000004f1353 in read_key_sequence (keybuf=3Dkeybuf@entry=3D0x7f= ffffffd7f0, prompt=3D12108082,=20 dont_downcase_last=3Ddont_downcase_last@entry=3Dfalse, can_return_swi= tch_frame=3Dcan_return_switch_frame@entry=3Dtrue,=20 fix_current_buffer=3Dfix_current_buffer@entry=3Dtrue, prevent_redispl= ay=3Dprevent_redisplay@entry=3Dfalse, bufsize=3D30) at keyboard.c:9081 #25 0x00000000004f2f70 in command_loop_1 () at keyboard.c:1449 #26 0x000000000055447e in internal_condition_case (bfun=3Dbfun@entry=3D0x= 4f2d80 ,=20 handlers=3D, hfun=3Dhfun@entry=3D0x4e9d40 )= at eval.c:1354 #27 0x00000000004e546e in command_loop_2 (ignore=3Dignore@entry=3D1210808= 2) at keyboard.c:1174 #28 0x000000000055438b in internal_catch (tag=3D12155586, func=3Dfunc@ent= ry=3D0x4e5450 , arg=3D12108082) at eval.c:1118 #29 0x00000000004e9967 in command_loop () at keyboard.c:1153 #30 recursive_edit_1 () at keyboard.c:777 #31 0x00000000004e9c52 in Frecursive_edit () at keyboard.c:845 #32 0x0000000000417f75 in main (argc=3D, argv=3D0x7fffffff= db48) at emacs.c:1654 * 1/4 of the time I get that one: (gdb) backtrace #0 0x00007ffff2453900 in ?? () from /usr/lib/x86_64-linux-gnu/libfontcon= fig.so.1 #1 0x00007ffff24543b6 in ?? () from /usr/lib/x86_64-linux-gnu/libfontcon= fig.so.1 #2 0x00007ffff246185d in ?? () from /usr/lib/x86_64-linux-gnu/libfontcon= fig.so.1 #3 0x00007ffff24619b0 in FcFontSetList () from /usr/lib/x86_64-linux-gnu= /libfontconfig.so.1 #4 0x00007ffff24621ff in FcFontList () from /usr/lib/x86_64-linux-gnu/li= bfontconfig.so.1 #5 0x00000000005b3792 in ftfont_list (f=3D, spec=3D122615= 65) at ftfont.c:955 #6 0x00000000005b61fa in xftfont_list (f=3D, spec=3D) at xftfont.c:141 #7 0x000000000056a879 in font_list_entities (f=3Df@entry=3D0x112a4b8, sp= ec=3Dspec@entry=3D18192877) at font.c:2756 #8 0x000000000056b242 in font_find_for_lface (f=3Df@entry=3D0x112a4b8, a= ttrs=3Dattrs@entry=3D0x1807320,=20 spec=3D, c=3Dc@entry=3D22269) at font.c:3232 #9 0x00000000005b9481 in fontset_find_font (fontset=3D19770717, c=3Dc@en= try=3D22269, face=3Dface@entry=3D0x1807320,=20 id=3Did@entry=3D-1, fallback=3Dfallback@entry=3Dfalse) at fontset.c:6= 81 #10 0x00000000005b9940 in fontset_font (fontset=3Dfontset@entry=3D1824985= 3, c=3Dc@entry=3D22269, face=3Dface@entry=3D0x1807320,=20 id=3D-1) at fontset.c:754 #11 0x00000000005ba3ea in face_for_char (f=3D0x112a4b8, face=3Dface@entry= =3D0x1807320, c=3D22269, pos=3D,=20 object=3D) at fontset.c:956 #12 0x000000000043ff68 in get_next_display_element (it=3Dit@entry=3D0x7ff= fffff82f0) at xdisp.c:7064 #13 0x000000000043d8d1 in move_it_in_display_line_to (it=3Dit@entry=3D0x7= fffffff82f0, to_charpos=3Dto_charpos@entry=3D2001,=20 to_x=3Dto_x@entry=3D-1, op=3Dop@entry=3DMOVE_TO_POS) at xdisp.c:8504 #14 0x00000000004450ec in move_it_to (it=3Dit@entry=3D0x7fffffff82f0, to_= charpos=3Dto_charpos@entry=3D2001,=20 to_x=3Dto_x@entry=3D-1, to_y=3Dto_y@entry=3D-1, to_vpos=3Dto_vpos@ent= ry=3D-1, op=3Dop@entry=3D8) at xdisp.c:9145 #15 0x000000000044999d in move_it_vertically_backward (it=3Dit@entry=3D0x= 7fffffff9e60, dy=3Ddy@entry=3D280) at xdisp.c:9318 #16 0x000000000045d26b in redisplay_window (window=3D18003149, just_this_= one_p=3Djust_this_one_p@entry=3Dfalse) at xdisp.c:16330 #17 0x0000000000461193 in redisplay_window_0 (window=3Dwindow@entry=3D180= 03149) at xdisp.c:14157 #18 0x00000000005545a6 in internal_condition_case_1 (bfun=3Dbfun@entry=3D= 0x461160 , arg=3D18003149,=20 handlers=3D, hfun=3Dhfun@entry=3D0x42b360 ) at eval.c:1378 #19 0x000000000042fbfe in redisplay_windows (window=3D18003149) at xdisp.= c:14137 #20 0x000000000044dfb1 in redisplay_internal () at xdisp.c:13736 #21 0x000000000044fdd5 in redisplay () at xdisp.c:13022 #22 0x00000000004ef9e1 in read_char (commandflag=3D1, map=3Dmap@entry=3D1= 9387718, prev_event=3D12108082,=20 used_mouse_menu=3Dused_mouse_menu@entry=3D0x7fffffffd71b, end_time=3D= end_time@entry=3D0x0) at keyboard.c:2569 #23 0x00000000004f1353 in read_key_sequence (keybuf=3Dkeybuf@entry=3D0x7f= ffffffd7f0, prompt=3D12108082,=20 dont_downcase_last=3Ddont_downcase_last@entry=3Dfalse, can_return_swi= tch_frame=3Dcan_return_switch_frame@entry=3Dtrue,=20 fix_current_buffer=3Dfix_current_buffer@entry=3Dtrue, prevent_redispl= ay=3Dprevent_redisplay@entry=3Dfalse, bufsize=3D30) at keyboard.c:9081 #24 0x00000000004f2f70 in command_loop_1 () at keyboard.c:1449 #25 0x000000000055447e in internal_condition_case (bfun=3Dbfun@entry=3D0x= 4f2d80 ,=20 handlers=3D, hfun=3Dhfun@entry=3D0x4e9d40 )= at eval.c:1354 #26 0x00000000004e546e in command_loop_2 (ignore=3Dignore@entry=3D1210808= 2) at keyboard.c:1174 #27 0x000000000055438b in internal_catch (tag=3D12155586, func=3Dfunc@ent= ry=3D0x4e5450 , arg=3D12108082) at eval.c:1118 #28 0x00000000004e9967 in command_loop () at keyboard.c:1153 #29 recursive_edit_1 () at keyboard.c:777 #30 0x00000000004e9c52 in Frecursive_edit () at keyboard.c:845 #31 0x0000000000417f75 in main (argc=3D, argv=3D0x7fffffff= db48) at emacs.c:1654 Hopefully someone can make sense of this. --92QCdOjCxGwOBWKEVNOpBeNgojV7bRVh1 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQIcBAEBAgAGBQJVqrIqAAoJEPqg+cTm90wjprQP/210pgYCos+FlS9+xICxttc8 61fMiR+SVNS17R20DxDZGLSLSnTcK41NEfw+xiEv5VpuzT/cC78TjzSelPMah/4t IxbIh1GYErwuAos57XmKOqBTQbXKpD3+wN2pMrv+2DNjvuYw1eQNjxDdOHyjd/kc uoeqVo+xzoP7dUOLNDuhXHeI515YkfD/UWeZctDFCZ61mLwY/A7ILot2cs/fxfLQ ZySycEtKm1Xc0jWaWJS5X+U0Eq0hMsY/rtoah8CWdw9jjAJ1p4DLIq96GXWVs6sD tr8TwzBGfWj17Tn0xj1lLrmS5J+XpAbdUMspjIOjn9+k4usPKnCtmM8dYGWxgX/h gi4+qcb6BNo5BuoxphlYcp70nu1HCkRIm9jjrFfjd2FtwPeGgmdXKKkNtIzRJx2/ GlC+oj0ig+thqs3V0R6mieIc6FcJBUugSrM45QILDJX0HHn2DTTFubMenqIYwX1E Hg726XtAbA3nhs3K7FCYc4J6/Sm6VrHiPaVtcVdI8CUsm4erNIHA0UTQOhGmrWC+ k0qsInsL4gEE3bkumFm3TJwlj7Gz6dIVGesP9hi2fcgL8k0sN8UXYllevF7lkgzb Qe540lp3+i8o3GIuUOtwIuo4Ig6TIQPUSQZlN/TULSgIhPIyF1cKa2YhyI6W9wKv SI1JFV0/SHjVCeVkJs71 =faEp -----END PGP SIGNATURE----- --92QCdOjCxGwOBWKEVNOpBeNgojV7bRVh1--