"Caching" code in the Start() to run it "later"

I have a lot of code in the start function of my script and all of it is essential for the game to work properly, and when I run it on my phone, it lags for a second or 2 until it’s done. Isn’t it better to cache all that code in a list and run each line every 10th frame or something and have a small loading screen instead?

This can be achieved with Co-Routines:
http://unity3d.com/learn/tutorials/modules/intermediate/scripting/coroutines

maybe you need to put some code to Awake, because Start is the first frame of GameObject (the enable exactly), while Awake is something like onLoad

here is the list of all methods Unity - Scripting API: MonoBehaviour

if you need to distribute some code for later, you can use coroutines Unity - Manual: Coroutines or you can just use Update function to call it later

You could use another function?

void DoThis {
     //code
}

void Start() {
     DoThis();
}

bool youneedthisnow;
void Update() {
    youneedthisnow = true;
    if(youneedthisnow){
         DoThis();
    }
}