-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Conversation
This means we won't catch any differences between 32-bit and 64-bit. We have unit tests for regressions around the size of an NSInteger, for example. |
We already conditionally do this in the packaging script (just not in the Xcode project). |
Okay; can we force |
Any reason why we wouldn't do this as part of the Xcode build and only do it in an external packaging script? |
With all of the above optimizations, arm64 shrinks from 3,351 KB to 2,925 KB. |
I’m all for performing the stripping in the Xcode project instead of the packaging script. The more of the packaging script we can put in proper Xcode build steps, the better.
I’d prefer not to trim the CI build matrix at the expense of local incremental build times. We already make this compromise when it comes to static builds, which is why #6194 went undetected for awhile. |
It's the other way around: Local build times would be faster, since we are only building the active architecture for Debug builds (typically arm64 with most modern devices). On CI, we'd explicitly set |
91cb49d
to
6e68b89
Compare
We can do it in the Xcode project, but the implementation of conditionally stripped symbols will have to be updated in the packaging script and all of the possible packages will need to be re-validated. |
What does that mean? Are you referring to code signing? |
I mean that we’ll need to confirm that every built package still works as expected. |
6e68b89
to
68b3723
Compare
@friedbunny what's the process here? Do we have a list of all the packages that need to build, and how to validate them? |
Here’s the list of packages we publish — static and dynamic w/symbols, static and dynamic w/o symbols, and one Fabric build that’s static w/o symbols. The process for verifying that a build is usable is mostly manual. You’ll need at least two test iOS projects that integrate Mapbox.framework — one for static and one for dynamic. Steps to confirm that a build works:
These steps should be repeated for every packaged build. I’m also unsure where we stand on Xcode 8 vs 7.3.1 (#7029) — it may be necessary to test builds from both. /cc @boundsj |
Is there a way to automate it? It seems that I can't run What is the advantage of building with symbols? I thought we have external symbols in the .dSYM file anyway?
Where do I get those from? Just create a new sample app that embeds those frameworks? Can we automate this? |
I looked at implementing LTO today and wasn’t able to observe any change in the bench app FPS on my iPhone 5 — plain master and various LTO combinations all averaged ~40.5 FPS. After watching the WWDC sessions that introduced LTO and ThinLTO, this was underwhelming. Notes
Links |
LTO optimizes the CPU code, but it looks like rendering is GPU bound on your phone. This would explain the lack of FPS increase. Did LTO have any effect on binary size? |
#12502 takes on LTO, the final unmerged piece of this PR — closing. |
We should do these changes to iOS compilation settings:
-fvisibility=hidden
/cc @1ec5