This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: recommend use of gperf version 3


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]