delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2012/02/03/07:10:53

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW
X-Spam-Check-By: sourceware.org
MIME-Version: 1.0
Date: Fri, 3 Feb 2012 13:10:14 +0100
Message-ID: <CAKw7uVj7q4xcnkrCHdgiUi5XPMB7RD76JeNgbJ5PY_Z=WTOLhA@mail.gmail.com>
Subject: tiny /etc/passwd parsing optimization
From: =?UTF-8?Q?V=C3=A1clav_Zeman?= <vhaisman AT gmail DOT com>
To: cygwin AT cygwin DOT com
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

--f46d041b467601111d04b80e32ad
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hi.
I was looking into how to speed up /etc/passwd parsing. Here is a
trivial patch that improves pwdgrp::parse_passwd() by a tiny bit.
Similar change can be applied to pwdgrp::parse_group() as well. The
resulting assembler shows that it avoids recomputing the pointers into
the array.

2012-02-02=C2=A0 Vaclav Zeman=C2=A0 <vhaisman AT gmail DOT com>

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * passwd.cc (pwdgrp::parse_passw=
d): Use reference instead of
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 #define to access current passwd=
_buf element.
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * grp.cc (pwdgrp::parse_group): =
Use reference instead of #define
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 to access current group_buf elem=
ent.

--
VZ

--f46d041b467601111d04b80e32ad
Content-Type: application/octet-stream; name="passwd.cc.diff"
Content-Disposition: attachment; filename="passwd.cc.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gy75mfzh0

LS0tIHBhc3N3ZC5jYy5vcmlnCTIwMTItMDItMDMgMTI6MDY6MjAuMjIxMzcw
MTAwICswMTAwCisrKyBwYXNzd2QuY2MJMjAxMi0wMi0wMyAxMjoxMTozMy44
OTE3MzQwMDAgKzAxMDAKQEAgLTMxLDcgKzMxLDcgQEAgc3RhdGljIHB3ZGdy
cCBwciAocGFzc3dkX2J1Zik7CiBib29sCiBwd2RncnA6OnBhcnNlX3Bhc3N3
ZCAoKQogewotIyBkZWZpbmUgcmVzICgqcGFzc3dkX2J1ZilbY3Vycl9saW5l
c10KKyAgcGFzc3dkICYgcmVzID0gKCpwYXNzd2RfYnVmKVtjdXJyX2xpbmVz
XTsKICAgcmVzLnB3X25hbWUgPSBuZXh0X3N0ciAoJzonKTsKICAgcmVzLnB3
X3Bhc3N3ZCA9IG5leHRfc3RyICgnOicpOwogICBpZiAoIW5leHRfbnVtIChy
ZXMucHdfdWlkKSkKQEAgLTQzLDcgKzQzLDYgQEAgcHdkZ3JwOjpwYXJzZV9w
YXNzd2QgKCkKICAgcmVzLnB3X2RpciA9ICBuZXh0X3N0ciAoJzonKTsKICAg
cmVzLnB3X3NoZWxsID0gbmV4dF9zdHIgKCc6Jyk7CiAgIHJldHVybiB0cnVl
OwotIyB1bmRlZiByZXMKIH0KIAogLyogUmVhZCBpbiAvZXRjL3Bhc3N3ZCBh
bmQgc2F2ZSBjb250ZW50cyBpbiB0aGUgcGFzc3dvcmQgY2FjaGUuCg==

--f46d041b467601111d04b80e32ad
Content-Type: application/octet-stream; name="grp.cc.diff"
Content-Disposition: attachment; filename="grp.cc.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gy75motc1

LS0tIGdycC5jYy5vcmlnCTIwMTItMDItMDMgMTI6MzU6MjcuMTI4MDQzMzAw
ICswMTAwCisrKyBncnAuY2MJMjAxMi0wMi0wMyAxMjozNzo1My42NzQ2OTY1
MDAgKzAxMDAKQEAgLTMyLDcgKzMyLDcgQEAgc3RhdGljIGNoYXIgKiBOT19D
T1BZIG51bGxfcHRyOwogYm9vbAogcHdkZ3JwOjpwYXJzZV9ncm91cCAoKQog
ewotIyBkZWZpbmUgZ3JwICgqZ3JvdXBfYnVmKVtjdXJyX2xpbmVzXQorICBf
X2dyb3VwMzIgJiBncnAgPSAoKmdyb3VwX2J1ZilbY3Vycl9saW5lc107CiAg
IGdycC5ncl9uYW1lID0gbmV4dF9zdHIgKCc6Jyk7CiAgIGlmICghKmdycC5n
cl9uYW1lKQogICAgIHJldHVybiBmYWxzZTsKQEAgLTYwLDcgKzYwLDYgQEAg
cHdkZ3JwOjpwYXJzZV9ncm91cCAoKQogICAgIH0KIAogICByZXR1cm4gdHJ1
ZTsKLSMgdW5kZWYgZ3JwCiB9CiAKIC8qIEN5Z3dpbiBpbnRlcm5hbCAqLwo=

--f46d041b467601111d04b80e32ad
Content-Type: application/octet-stream; name="passwd.s.diff"
Content-Disposition: attachment; filename="passwd.s.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gy7684g42

LS0tIHBhc3N3ZC5zLm9yaWcucGFyc2VfcGFzc3dkCTIwMTItMDItMDMgMTI6
NDE6MzQuNzM1ODAwNDAwICswMTAwCisrKyBwYXNzd2Qucy5wYXJzZV9wYXNz
d2QJMjAxMi0wMi0wMyAxMjo0MjoyMC45MDQ0MTY4MDAgKzAxMDAKQEAgLTEx
LDU2ICsxMSw1MSBAQCBMQ0ZJMjc6CiAJc3VibAkkMjAsICVlc3AKIExDRkky
ODoKIAkubG9jIDQgMzMgMAotCW1vdmwJMzIoJWVzcCksICVlYngKKwltb3Zs
CTMyKCVlc3ApLCAlZXNpCitMQkIxODE6CisJLmxvYyA0IDM0IDAKKwltb3Zs
CTQoJWVzaSksICVlYXgKKwltb3ZsCTU2KCVlc2kpLCAlZWJ4CisJc2FsbAkk
NSwgJWVieAorCWFkZGwJKCVlYXgpLCAlZWJ4CitMVkwxNToKIAkubG9jIDQg
MzUgMAotCW1vdmwJNCglZWJ4KSwgJWVheAotCW1vdmwJNTYoJWVieCksICVl
c2kKLQlzYWxsCSQ1LCAlZXNpCi0JYWRkbAkoJWVheCksICVlc2kKIAltb3Zs
CSQ1OCwgNCglZXNwKQotCW1vdmwJJWVieCwgKCVlc3ApCisJbW92bAklZXNp
LCAoJWVzcCkKIAljYWxsCV9fWk42cHdkZ3JwOG5leHRfc3RyRWMKLQltb3Zs
CSVlYXgsICglZXNpKQorCW1vdmwJJWVheCwgKCVlYngpCiAJLmxvYyA0IDM2
IDAKLQltb3ZsCTU2KCVlYngpLCAlZXNpCi0JbW92bAk0KCVlYngpLCAlZWF4
Ci0Jc2FsbAkkNSwgJWVzaQotCWFkZGwJKCVlYXgpLCAlZXNpCiAJbW92bAkk
NTgsIDQoJWVzcCkKLQltb3ZsCSVlYngsICglZXNwKQorCW1vdmwJJWVzaSwg
KCVlc3ApCiAJY2FsbAlfX1pONnB3ZGdycDhuZXh0X3N0ckVjCi0JbW92bAkl
ZWF4LCA0KCVlc2kpCisJbW92bAklZWF4LCA0KCVlYngpCiAJLmxvYyA0IDM3
IDAKLQltb3ZsCTU2KCVlYngpLCAlZWF4Ci0JbW92bAk0KCVlYngpLCAlZWR4
Ci0Jc2FsbAkkNSwgJWVheAotCWFkZGwJKCVlZHgpLCAlZWF4Ci0JbW92bAkl
ZWJ4LCAoJWVzcCkKLQlhZGRsCSQ4LCAlZWF4CisJbGVhbAk4KCVlYngpLCAl
ZWF4CiAJbW92bAklZWF4LCA0KCVlc3ApCisJbW92bAklZXNpLCAoJWVzcCkK
IAljYWxsCV9fWk42cHdkZ3JwOG5leHRfbnVtRVJtCiAJdGVzdGIJJWFsLCAl
YWwKIAlqbmUJTDM2CiBMMzI6Ci0JLmxvYyA0IDQ3IDAKK0xCRTE4MToKKwku
bG9jIDQgNDYgMAogCWFkZGwJJDIwLCAlZXNwCiBMQ0ZJMjk6CiAJcG9wbAkl
ZWJ4CiBMQ0ZJMzA6CitMVkwxNjoKIAlwb3BsCSVlc2kKIExDRkkzMToKIAly
ZXQKK0xWTDE3OgogCS5wMmFsaWduIDQsLDcKIEwzNjoKIExDRkkzMjoKK0xC
QjE4MjoKIAkubG9jIDQgMzkgMAotCW1vdmwJNCglZWJ4KSwgJWVkeAotCW1v
dmwJNTYoJWVieCksICVlYXgKLQlzYWxsCSQ1LCAlZWF4Ci0JYWRkbAkoJWVk
eCksICVlYXgKLQltb3ZsCSVlYngsICglZXNwKQotCWFkZGwJJDEyLCAlZWF4
CisJbGVhbAkxMiglZWJ4KSwgJWVheAogCW1vdmwJJWVheCwgNCglZXNwKQor
CW1vdmwJJWVzaSwgKCVlc3ApCiAJY2FsbAlfX1pONnB3ZGdycDhuZXh0X251
bUVSbQogCW1vdmwJJWVheCwgJWVkeAogCS5sb2MgNCA0MCAwCkBAIC02OSw0
NCArNjQsMzQgQEAgTENGSTMyOgogCXRlc3RiCSVkbCwgJWRsCiAJamUJTDMy
CiAJLmxvYyA0IDQxIDAKLQltb3ZsCTQoJWVieCksICVlYXgKLQltb3ZsCTU2
KCVlYngpLCAlZXNpCi0JbW92bAkoJWVheCksICVlYXgKLQlzYWxsCSQ1LCAl
ZXNpCi0JbW92bAkkMCwgMTYoJWVheCwlZXNpKQorCW1vdmwJJDAsIDE2KCVl
YngpCiAJLmxvYyA0IDQyIDAKLQltb3ZsCTQoJWVieCksICVlYXgKLQlhZGRs
CSglZWF4KSwgJWVzaQotCW1vdmwJJWVieCwgKCVlc3ApCisJbW92bAklZXNp
LCAoJWVzcCkKIAltb3ZsCSQ1OCwgNCglZXNwKQogCWNhbGwJX19aTjZwd2Rn
cnA4bmV4dF9zdHJFYwotCW1vdmwJJWVheCwgMjAoJWVzaSkKKwltb3ZsCSVl
YXgsIDIwKCVlYngpCiAJLmxvYyA0IDQzIDAKLQltb3ZsCTU2KCVlYngpLCAl
ZXNpCi0JbW92bAk0KCVlYngpLCAlZWF4Ci0Jc2FsbAkkNSwgJWVzaQotCWFk
ZGwJKCVlYXgpLCAlZXNpCi0JbW92bAklZWJ4LCAoJWVzcCkKKwltb3ZsCSVl
c2ksICglZXNwKQogCW1vdmwJJDU4LCA0KCVlc3ApCiAJY2FsbAlfX1pONnB3
ZGdycDhuZXh0X3N0ckVjCi0JbW92bAklZWF4LCAyNCglZXNpKQorCW1vdmwJ
JWVheCwgMjQoJWVieCkKIAkubG9jIDQgNDQgMAotCW1vdmwJNTYoJWVieCks
ICVlc2kKLQltb3ZsCTQoJWVieCksICVlYXgKLQlzYWxsCSQ1LCAlZXNpCi0J
YWRkbAkoJWVheCksICVlc2kKLQltb3ZsCSVlYngsICglZXNwKQorCW1vdmwJ
JWVzaSwgKCVlc3ApCiAJbW92bAkkNTgsIDQoJWVzcCkKIAljYWxsCV9fWk42
cHdkZ3JwOG5leHRfc3RyRWMKLQltb3ZsCSVlYXgsIDI4KCVlc2kpCi0JLmxv
YyA0IDQ3IDAKKwltb3ZsCSVlYXgsIDI4KCVlYngpCitMQkUxODI6CisJLmxv
YyA0IDQ2IDAKIAlhZGRsCSQyMCwgJWVzcAogTENGSTMzOgorTEJCMTgzOgog
CS5sb2MgNCA0NSAwCiAJbW92bAkkMSwgJWVheAotCS5sb2MgNCA0NyAwCitM
QkUxODM6CisJLmxvYyA0IDQ2IDAKIAlwb3BsCSVlYngKIExDRkkzNDoKK0xW
TDE4OgogCXBvcGwJJWVzaQogTENGSTM1OgogCXJldAo=


--f46d041b467601111d04b80e32ad
Content-Type: text/plain; charset=us-ascii

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
--f46d041b467601111d04b80e32ad--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019