[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: Re: [PATCH 1/1] libbb: reduce the overhead of single parameter bb_error_msg() calls
From: James Byrne <james.byrne () origamienergy ! com>
Date: 2018-05-27 11:41:47
Message-ID: ccc1ef8c-8dd3-5e75-abdd-03bdb2faf756 () origamienergy ! com
[Download RAW message or body]
Hi Denys,
On 26/05/18 17:21, Denys Vlasenko wrote:
> The patch is whitespace damaged, please send as attachment next time.
I sent with 'git send-email' as I thought that would avoid any damage,
but clearly it didn't work. Will send as an attachment next time.
> On Fri, May 11, 2018 at 7:32 PM, James Byrne
> <james.byrne@origamienergy.com> wrote:
> > The space saving gained by this (using 'defconfig' on x86_64 with gcc
> > Ubuntu 6.4.0-17ubuntu1~16.04) was:
> >
> > ------------------------------------------------------------------------------
> > (add/remove: 3/0 grow/shrink: 4/301 up/down: 73/-910) Total: -837
> > bytes
> > text data bss dec hex filename
> > 936949 4263 1856 943068 e63dc busybox_old
> > 936098 4263 1856 942217 e6089 busybox_unstripped
>
> Can't reproduce:
>
> function old new delta
> bb_simple_herror_msg - 14 +14
> bb_simple_error_msg - 14 +14
> bb_simple_herror_msg_and_die - 11 +11
> bb_simple_error_msg_and_die - 11 +11
> sha1_process_block64 322 328 +6
> expand_one_var 1599 1603 +4
> fail_hunk 136 139 +3
> mklocal 290 288 -2
> xgethostbyname 27 23 -4
> find_applet_by_name 128 124 -4
> die 35 31 -4
> chat_main 1379 1375 -4
> arp_show 704 700 -4
> arp_main 1455 1451 -4
> add_interface 103 99 -4
> acpid_main 1188 1184 -4
> wget_main 2389 2384 -5
> tftp_protocol 1839 1832 -7
> getoptscmd 595 587 -8
> builtin_read 210 202 -8
> nfsmount 3556 3546 -10
> ------------------------------------------------------------------------------
> (add/remove: 4/0 grow/shrink: 3/14 up/down: 63/-72) Total: -9 bytes
That's interesting. I tried 'defconfig' on x86_64 with GCC 6, 7 and 8
(using glibc) and got much larger savings each time. What compiler and
config were you testing?
> > +/* Override bb_error_msg() and related functions with macros that will
> > + * substitute them for the equivalent bb_simple_error_msg() function when
> > + * they are used with only a single parameter. Macro approach inspired by
> > + * https://gustedt.wordpress.com/2010/06/08/detect-empty-macro-arguments and
> > + * https://gustedt.wordpress.com/2010/06/03/default-arguments-for-c99
> > + */
> > +#define _ARG16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, \
> > _15, ...) _15 +#define BB_MSG_KIND(...) _ARG16(__VA_ARGS__, , , , , , , , , , , , \
> > , , , _simple) +#define _BB_MSG(name, kind, ...) bb##kind##name(__VA_ARGS__)
> > +#define BB_MSG(name, kind, ...) _BB_MSG(name, kind, __VA_ARGS__)
> > +#define bb_error_msg(...) BB_MSG(_error_msg, BB_MSG_KIND(__VA_ARGS__), \
> > __VA_ARGS__) +#define bb_error_msg_and_die(...) BB_MSG(_error_msg_and_die, \
> > BB_MSG_KIND(__VA_ARGS__), __VA_ARGS__) +#define bb_perror_msg(...) \
> > BB_MSG(_perror_msg, BB_MSG_KIND(__VA_ARGS__), __VA_ARGS__) +#define \
> > bb_perror_msg_and_die(...) BB_MSG(_perror_msg_and_die, BB_MSG_KIND(__VA_ARGS__), \
> > __VA_ARGS__)
>
> NAK this part. I prefer explicit use of _simple_ functions,
> not this magic conversion.
I'm happy to resubmit with everything changed to explicit _simple_
functions. While I tend to agree that less magic is better, the main
disadvantage will be that over time people will keep adding new single
parameter calls to bb_error_msg() etc., and they will need periodic
manual replacement, whereas the magic macros do it automatically.
Regards,
James
The contents of this email and any attachment are confidential to the intended \
recipient(s). If you are not an intended recipient: (i) do not use, disclose, \
distribute, copy or publish this email or its contents; (ii) please contact the \
sender immediately; and (iii) delete this email. Our privacy policy is available \
here: https://origamienergy.com/privacy-policy/. Origami Energy Limited (company \
number 8619644); Origami Storage Limited (company number 10436515) and OSSPV001 \
Limited (company number 10933403), each registered in England and each with a \
registered office at: Ashcombe Court, Woolsack Way, Godalming, GU7 1LQ. \
_______________________________________________ busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic