Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

precompile: skip small functions #26196

Merged
merged 1 commit into from
Feb 25, 2018
Merged

Conversation

vtjnash
Copy link
Member

@vtjnash vtjnash commented Feb 24, 2018

These are likely to never be called directly, and would be quick to compile if they happened to be. In v0.6, I used to be manually excluding many of these from the sysimg; this is just a more general.

before
2565541888 maximum resident set size # 2.5 GB

after
1980424192 maximum resident set size # 2.0 GB

(build time and .ji size are also about proportionally (~25%) improved)

These are likely to never be called directly,
and would be quick to compile if they happened to be.
@vtjnash vtjnash added building Build system, or building Julia or its dependencies compiler:precompilation Precompilation of modules labels Feb 24, 2018
@KristofferC
Copy link
Member

Running with Pkg3 precompilation on, I get the following with GNU Time:

Before PR:

   Command being timed: "make"
        Elapsed (wall clock) time (h:mm:ss or m:ss): 6:43.50
        Maximum resident set size (kbytes): 3259596

After PR:

 Command being timed: "make"
        Elapsed (wall clock) time (h:mm:ss or m:ss): 5:59.28
        Maximum resident set size (kbytes): 2551840

There seem to be some slight regressions in first call timing 0.5s -> 0.8s for first call to status and 1.5s -> 1.8s for first call to add so not that bad.

@JeffBezanson
Copy link
Member

Seems like a huge win to me.

@KristofferC
Copy link
Member

KristofferC commented Feb 24, 2018

FWIW, current master (no Pkg3 precompile) is at Maximum resident set size (kbytes): 2843524. I haven't tried this PR without Pkg3 precompile yet.

@staticfloat
Copy link
Member

Verification runs on buildbots:

ubuntu32: https://build.julialang.org/#/builders/68/builds/817 (this one doesn't really matter, it's just as verification that failures on x86 aren't due to something weird about the old CentOS images we use for the linux32 builder)
linux32: https://build.julialang.org/#/builders/47/builds/811
win32: https://build.julialang.org/#/builders/44/builds/819

@staticfloat
Copy link
Member

Confirmed that this PR passes tests on all the buildbots, tragically the win32 buildbot fails on make docs after passing all tests.

@JeffBezanson
Copy link
Member

I don't see any error messages from the doc build. Is there a way to get them?

@staticfloat
Copy link
Member

For some reason it's saved into docbuild.log instead of just written out, but it's TLS issues while trying to clone METADATA.jl.

@staticfloat
Copy link
Member

staticfloat commented Feb 25, 2018

I applied the hotfix to the windows buildbots, I'm re-running the win32 build of this branch here: https://build.julialang.org/#/builders/44/builds/822

@staticfloat
Copy link
Member

We're good to go on win32.

@JeffBezanson JeffBezanson merged commit 8b395aa into master Feb 25, 2018
@JeffBezanson JeffBezanson deleted the jn/precompiler-lighter branch February 25, 2018 16:24
@StefanKarpinski
Copy link
Member

Based on the analysis @KristofferC did in #26767, the premise of this PR seems like it may be false.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
building Build system, or building Julia or its dependencies compiler:precompilation Precompilation of modules
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants