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: Reduce startup cost of compiler (patch 1)


On Mon, 23 Jul 2007, Jan Hubicka wrote:

> with my changes it is now:
> 248879   43.0979  no-vmlinux               no-vmlinux               (no symbols)
> 17864     3.0935  cc1                      cc1                      ggc_alloc_stat
> 11423     1.9781  libc-2.5.so              libc-2.5.so              memset
> 11383     1.9712  cc1                      cc1                      new_convert_optab
> 11063     1.9158  libc-2.5.so              libc-2.5.so              strlen
> 9191      1.5916  cc1                      cc1                      free_binding_and_advance
> 7912      1.3701  libc-2.5.so              libc-2.5.so              _int_malloc
> 6654      1.1523  cc1                      cc1                      make_node_stat
> 6482      1.1225  cc1                      cc1                      do_add
> 5799      1.0042  cc1                      cc1                      tree_code_size
> 5503      0.9529  cc1                      cc1                      do_multiply
> 5154      0.8925  cc1                      cc1                      init_regs
> 4969      0.8605  cc1                      cc1                      do_divide
> 4501      0.7794  cc1                      cc1                      pop_scope
> 4381      0.7587  cc1                      cc1                      ht_lookup_with_hash
>
> [...]
> do_add and friends are caused by parsing incredibly long real numbers by incredibly slow
> simulator in:
>   real_from_string (&dconstpi,
>     "3.1415926535897932384626433832795028841971693993751058209749445923078");
>   real_from_string (&dconste,
>     "2.7182818284590452353602874713526624977572470936999595749669676277241");
> and friends.  Perhaps this can be precomputed, but at least it is not dirtifying memory.

The dconstpi doesn't exist in mainline.  (Which gcc version were you
testing with?)  But it has been replaced by another one, dconstsqrt2.

There's also a computation of dconstthird using dconst1/dconst3.  I'm not
sure if that div calcuation dominates the above profile of do_*, or it's
really real_from_string for the above constants.

I think I can get rid of some or all of these dconst's, and/or use lazy
evaluation so they're only computed if used.  Would you like me to do
that?

		--Kaveh
--
Kaveh R. Ghazi			ghazi@caip.rutgers.edu


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