delorie.com/archives/browse.cgi | search |
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--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |