-
Notifications
You must be signed in to change notification settings - Fork 179
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
Linux and *BSD Support #43
Conversation
3d868e9
to
41c7b42
Compare
472f0d6
to
606abd4
Compare
9f60267
to
c417ca7
Compare
¯\_(ツ)_/¯ I'm just gonna merge and encourage people to try out 0.3.0.pre. |
totally fine with me, I am meaning to do some perf measurments on boot impact, will let you know once it is done. |
This is looking awesome performance wise @burke Baseline on Linux:
0.2.14 on Linux:
0.3.0.pre no ISEQ/YAML cache yet:
0.3.0.pre ISEQ cache
0.3.0.pre ISEQ + YAML cache
Excellent work. This is faster than old version under ALL conditions for us. |
Works here too on ubuntu 16.04. Cuts off about 2.5 seconds from the bootup on our codebase. Thanks for the hard work!! |
@zmoazeni what was the absolute time prior to bootsnap? |
@SamSaffron re-running the same command you posted above here's before and after:
|
wow... that is huge! |
Here's another data point. The numbers above were from my beefy development machine. Here's the numbers on the same codebase on a Dell XPS 13 also running Ubuntu 16.04 (my travel machine):
|
This PR migrates from xattr as a cache backend to a simple directory of files.
The cache file naming scheme is
A/B[0..1]/B[2..-1]
, where:A
is thecache_dir
provided onBootsnap.setup
;B
is a hex-encoded FNV1a-64 hash of the fully-expanded path of the file being cached.The cache key is similar to the previous iteration with the following significant changes:
size
) as added insurance against hash collisions, etc. Probably not necessary, but it's effectively free.As a bonus, this seems to be (very) marginally faster than master.
This unfortunately ends up being a fairly brutal diff to review since it's a near-complete rewrite of
bootsnap.c
, so if I've tagged you for review, I won't hold it against you if you only take a cursory look. I think the C got a little bit easier to read than it was before but it's still a bit of a project./cc @SamSaffron