Joe Neeman escreveu:
>
> Hi,
>
> I have added scripts for profiling, see buildscripts/build-profile.sh.
>
> It turns out that the skyline related routines have replaced
> Grob::get_property() as the top-contender in the profile. Can you
> have a look to see if this can be optimized?
>
>
> I'll take a look. How important is the optimisation? (I was thinking of
> trying to turn 2-pass spacing into 1-pass spacing -- which should I do
> first?)
I don't know, take a look at the profile and see if you can come up with some
simple shortcuts. I already did a few. (Couldn't sleep last night).
A few simple optimizations put Page_spacer::calc_subproblem at the top.
Some further optimisations give
time seconds seconds calls ms/call ms/call name
7.48 0.62 0.62 564933 0.00 0.00 Page_spacer::calc_subproblem(unsigned int, unsigned int)
3.38 0.90 0.28 1103679 0.00 0.00 Building::conceals_beginning(Building const&) const
3.02 1.15 0.25 1467008 0.00 0.00 Building::precompute()
2.90 1.39 0.24
73951 0.00 0.01 Skyline::internal_merge_skyline(std::list<Building, std::allocator<Building> >*, std::list<Building, std::allocator<Building> >*, std::list<Building, std::allocator<Building> >*)
2.83 1.63 0.24 8807932 0.00 0.00 Grob::internal_get_property_data(scm_unused_struct*) const
2.77 1.86 0.23 2063603 0.00 0.00 Building::conceals(Building const&) const
2.53 2.07 0.21 1739992 0.00 0.00 Grob::extent(Grob*, Axis) const