Reducing Dylib Loading Time

My app reports the following via DYLD_PRINT_STATISTICS:


Total pre-main time: 656.98 milliseconds (100.0%)
         dylib loading time: 565.48 milliseconds (86.0%)
        rebase/binding time:  31.67 milliseconds (4.8%)
            ObjC setup time:  30.15 milliseconds (4.5%)
           initializer time:  29.55 milliseconds (4.4%)
           slowest intializers :
             libSystem.B.dylib :   5.89 milliseconds (0.8%)
                         MyApp :  28.42 milliseconds (4.3%)


This is running on an iPod 6 gen with iOS 10.1, which is the device I currently use for testing. The linked libraries are:


* CoreTelephony.framework
* OpenGLES.framework
* GLKit.framework
* libsqlite3.dylib
* Social.framework
* AdSupport.framework
* CoreMotion.framework
* CoreImage.framework
* Accelerate.framework
* libz.dylib
* Accounts.framework
* MediaPlayer.framework
* Foundation.framework
* UIKit.framework
* CoreGraphics.framework
* MessageUI.framework
* CoreData.framework
* AVFoundation.framework
* libxml2.dylib
* Security.framework
* CoreLocation.framework
* MobileCoreServices.framework
* SystemConfiguration.framework
* AudioToolbox.framework
* CFNetwork.framework
* QuartzCore.framework
* CoreMedia.framework
* AssetsLibrary.framework
* CoreVideo.framework
* ImageIO.framework
* StoreKit.framework
* MapKit.framework
* CoreText.framework
* HockeySDK.framework
* FacebookSDK.framework
* MagicKit.framework
* libturbojpeg.a


Most of these are system frameworks. What could I do to reduce the time dylib loading takes?

Replies

We are having the same situation. All optimizations are talking about reducing number of libraries, but what if they all are system or maybe some really important 3rd party libraries.
How to optimize then?
Maybe it is possible to use some other techniques?

The best reference would be this year's WWDC talk: https://developer.apple.com/videos/play/wwdc2016/406/