[Scons-users] Performance of version 2.5.0 vs 2.3.0 on Windows host dropped significantly
hmnews at proconx.com
hmnews at proconx.com
Tue Aug 9 08:45:28 EDT 2016
Hi to all who responded,
William's pull request reduces the total build time from 12s down to
3.5s! So this would solve the issue.
I compared some Scons versions for our reference project (C++, 161 C/C++
files eg targets) which is a real-world gcc cross-compilation project
not some odd test case.
2.3.0: 2.4s
2.3.5: 3.15s
2.3.6: 3.3s
2.5.0: 12s
2.5.0 with pull request applied: 3.5s
Based on that, 2.3.0 is still the unbeaten winner, 2.3.5 and 2.3.6 I can
live with and once the pull request is applied to 2.5 build times are at
least again within a reasonable range for the project size.
And yes, the build time scales with the number of object files in the
project.
I can't test on Linux, my build environment lives purely on Windows.
Thanks for all the help. Scons is a very useful tool.
Henrik
William Blevins wrote:
> Hi,
>
> This may be a known issue. SCons 2.5.0 changed how implicit dependencies
> were generated which added cross-language support (and fixed potentially
> missing implicit dependencies). As Alexey Klimkin has already pointed
> out, the change could be optimized safely by caching the path_func
> results. This wasn't something the original Executor code required,
> since scanner_key(s) never changed after previously picking the initial
> scanner. Please see
> https://bitbucket.org/scons/scons/pull-requests/345/optimize-implicit-dependency-scan/diff
>
> Your performance issue is most likely related. My fault entirely. I
> hadn't expected those calls to be that expensive or perhaps I just
> didn't have a test build big enough to notice.
>
> If you have the ability to try a patched version of SCons from the PR
> above, then feedback would be appreciated.
>
> V/R,
> William
>
> On Mon, Aug 8, 2016 at 9:37 AM, Vasily <just.one.man at yandex.ru
> <mailto:just.one.man at yandex.ru>> wrote:
>
> Hi,
>
> You might also do some profiling of fast and slow cases and compare
> the results to see if there is any hint on what's slowing down your
> build.
>
> Thanks,
> Vasily
>
> 08 авг. 2016 г. 10:17 пользователь "Dirk Bächle" <tshortik at gmx.de
> <mailto:tshortik at gmx.de>> написал:
>
> Hi Henrik,
>
> On 08.08.2016 03:23, hmnews at proconx.com
> <mailto:hmnews at proconx.com> wrote:
>
> Hi all,
>
> We just updated to Scons 2.5.0 after using happily 2.3.0 for
> years.
>
> Sadly we found performance to have dropped significantly and
> I wonder
> what the contributing factor could be.
>
> Platform: Windows 10
> Python: 2.7.12 64-bit
>
>
> some more questions about this: Can you compare the times for a
> build under Linux as well, or do you build under Windows only?
>
> [...]
>
> However with 2.5.0 execution time blows out to 11.8s, more
> than 4 times
> longer!!!
>
>
> You say that this is a benchmark project. What happens to the
> "real" projects? Do they scale, i.e. do they also take about 4
> times longer each?
>
> [...]
>
> I appears that Scons takes much longer in 2.5.0 to analyse
> the build
> targets. This is also apparent when running scons-2.5.0
> --debug=prepare
> which takes noticeable longer to to print the file list.
>
> I also compared the dependency tree for both version using
> --debug=tree
> and they are identical.
>
>
> Good to know, because we have changed "scanning" in a few
> places, which could've explained the longer times too.
>
> Has anybody experienced a similar behaviour and is there any
> tuning
> parameter to make 2.5.0 offer the same performance of 2.3.0?
>
>
> If there were such a parameter, it would definitely be "on" by
> default. ;)
>
>
> Is there any debug option to analyse why Scons 2.5.0 takes
> such a long
> execution time?
>
>
> In general, SCons uses most of its time during a "zero build"
> (nothing to do), "subst"ing variable values. If you're prepared
> for a long and technical read have a look at
> https://bitbucket.org/scons/scons/wiki/WhySconsIsNotSlow
> <https://bitbucket.org/scons/scons/wiki/WhySconsIsNotSlow> . You
> might also want to check out the "fastcpp" tool at
> https://bitbucket.org/dirkbaechle/scons_fastcpp
> <https://bitbucket.org/dirkbaechle/scons_fastcpp> to get an idea
> of how to "tweak" your environment/toolchain to get more speed
> in general.
>
> I hope these first comments already help you a little further.
>
> Best regards,
>
> Dirk
>
>
>
> Thanks
>
> Henrik
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org <mailto:Scons-users at scons.org>
> https://pairlist4.pair.net/mailman/listinfo/scons-users
> <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org <mailto:Scons-users at scons.org>
> https://pairlist4.pair.net/mailman/listinfo/scons-users
> <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org <mailto:Scons-users at scons.org>
> https://pairlist4.pair.net/mailman/listinfo/scons-users
> <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
More information about the Scons-users
mailing list