This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: recommend use of gperf version 3
- From: Ranjit Mathew <rmathew at gmail dot com>
- To: Bruno Haible <bruno at clisp dot org>
- Cc: gcc-patches at gcc dot gnu dot org, GCJ Patches <java-patches at gcc dot gnu dot org>
- Date: Tue, 07 Jun 2005 15:30:16 +0530
- Subject: Re: recommend use of gperf version 3
- References: <200506061226.39392.bruno@clisp.org>
Bruno Haible wrote:
> Hi,
>
> The files cp/cfns.gperf and java/keyword.gperf are - as distributed -
> processed by gperf-2.7.2 or with particular options. The use of gperf-3.0.1
> (released in 2003) can create smaller and faster hash tables, with less
> command line options:
>
> * cp/cfns.gperf: If you drop the options "-k '1-6,$' -j1 -D" and add
> instead "-m 10",
> - the hash function accesses 4 bytes of the input string (instead of 7),
> - the hash table size drops to 317 (instead of 391).
>
> * java/keyword.gperf: If you drop the options "-j1 -i 1 -g -o -k'1,4,$'" and
> add instead "-m 10",
> - the hash function accesses 2 bytes of the input string (instead of 3),
> - the hash table size drops to 53 (instead of 79).
>
> Find attached a patch that does this.
Hi Bruno,
Just FYI, all patches to the Java front-end need to be
CC-ed to "java-patches@gcc.gnu.org". They should also be
tested with Jacks:
http://gcc.gnu.org/install/test.html#TOC2
There *should not* be any regressions, but you never
know...
I assume that you bootstrapped and tested for regressions
after you applied your patch. Were you able to measure any
improvements in performance?
Thanks,
Ranjit.
> cp/ChangeLog:
> 2005-06-05 Bruno Haible <bruno@clisp.org>
>
> * Make-lang.in ($(srcdir)/cp/cfns.h): Use gperf option -m 10.
> Bail out if gperf is too old.
>
> java/ChangeLog:
> 2005-06-05 Bruno Haible <bruno@clisp.org>
>
> * Make-lang.in ($(srcdir)/java/keyword.h): Use gperf option -m 10.
>
> *** gcc-4.0.0/gcc/cp/Make-lang.in.bak Tue Jan 18 12:45:31 2005
> --- gcc-4.0.0/gcc/cp/Make-lang.in Sun Jun 5 17:26:28 2005
> ***************
> *** 97,104 ****
>
> # Special build rules.
> $(srcdir)/cp/cfns.h: $(srcdir)/cp/cfns.gperf
> ! gperf -o -C -E -k '1-6,$$' -j1 -D -N 'libc_name_p' -L ANSI-C \
> ! $(srcdir)/cp/cfns.gperf > $(srcdir)/cp/cfns.h
>
> gtype-cp.h gt-cp-call.h gt-cp-decl.h gt-cp-decl2.h : s-gtype; @true
> gt-cp-pt.h gt-cp-repo.h gt-cp-parser.h gt-cp-method.h : s-gtype; @true
> --- 97,108 ----
>
> # Special build rules.
> $(srcdir)/cp/cfns.h: $(srcdir)/cp/cfns.gperf
> ! gperf -o -C -E -N 'libc_name_p' -L ANSI-C -m 10 \
> ! $(srcdir)/cp/cfns.gperf > c$$$$.h || { \
> ! echo "Please update gperf from ftp://ftp.gnu.org/pub/gnu/gperf/" >&2; \
> ! rm -f c$$$$.h; \
> ! exit 1; } ; \
> ! mv -f c$$$$.h $(srcdir)/cp/cfns.h
>
> gtype-cp.h gt-cp-call.h gt-cp-decl.h gt-cp-decl2.h : s-gtype; @true
> gt-cp-pt.h gt-cp-repo.h gt-cp-parser.h gt-cp-method.h : s-gtype; @true
> *** gcc-4.0.0/gcc/java/Make-lang.in.bak Sat Mar 12 03:16:28 2005
> --- gcc-4.0.0/gcc/java/Make-lang.in Sun Jun 5 17:24:01 2005
> ***************
> *** 87,93 ****
>
> $(srcdir)/java/keyword.h: $(srcdir)/java/keyword.gperf
> (cd $(srcdir)/java || exit 1; \
> ! gperf -L ANSI-C -C -F ', 0' -p -t -j1 -i 1 -g -o -N java_keyword -k1,4,$$ \
> keyword.gperf > k$$$$.h || { \
> echo "Please update gperf from ftp://ftp.gnu.org/pub/gnu/gperf/" >&2; \
> rm -f k$$$$.h; \
> --- 87,93 ----
>
> $(srcdir)/java/keyword.h: $(srcdir)/java/keyword.gperf
> (cd $(srcdir)/java || exit 1; \
> ! gperf -L ANSI-C -C -F ', 0' -p -t -N java_keyword -m 10 \
> keyword.gperf > k$$$$.h || { \
> echo "Please update gperf from ftp://ftp.gnu.org/pub/gnu/gperf/" >&2; \
> rm -f k$$$$.h; \
>
>
--
Ranjit Mathew Email: rmathew AT gmail DOT com
Bangalore, INDIA. Web: http://ranjitmathew.hostingzero.com/