Hi Grigory, > Similar issue was reported against 'ld' 1.5 years ago. Simple change of > default hash size from 4K to 64K gave 2x link time improvement. > http://lists.gnu.org/archive/html/bug-gnu-utils/2003-08/msg00153.html > > Thus the patch may look like this: > > $ diff gas/hash.c.org gas/hash.c > > 38c38 > < #define DEFAULT_SIZE (4051) > --- >>#define DEFAULT_SIZE (65537) We might as well do this properly. Please could you try the attached patch which as well as changing the default hash size adds two new switches: --hash-size= and --reduce-memory-overheads which behave in much the same way as their linker namesakes. If the patch works for you and there are no objections then I will apply it next week. Cheers Nick gas/ChangeLog 2005-04-06 Nick Clifton * hash.c (DEFAULT_SIZE): Delete. Replace with: (gas_hash_table_size): New static variable. (set_gas_hash_table_size): New function: Records a requested size for the hash tables. (get_gas_hash_table_size): New function: Return a prime number near the requested size of the hash table. (hash_new): Use get_gas_hash_table_size. * hash.h: Add a prototype for set_gas_hash_table_size. * as.c (show_usage): Add description of new switches: --hash-size and --reduce-memory-overheads. (option_values): Add OPTION_HASH_TABLE_SIZE and OPTION_REDUCE_MEMORY_OVERHEADS. (std_longpopts): Add entries for the new options. (parse_args): Handle the new options. * Makefile.am: Add a dependency of as.c on hash.h. * Makefile.in: Regenerate. * doc/as.texinfo: Document the new switches. * NEWS: Mention the new switches.