How to run hooks one by one manually?

When there’s an issue such as yours, there is probably 1 function stuck somewhere that delays the loading. You can retrieve a list of all functions attached to a hook this way:

global $wp_filter;
$actions = $wp_filter['init'] ;

Now you can remove the functions from the hook one by one, by using remove_action() and see when the problem goes away. Some of the functions are of core functions of course, and will crash the loading if unhooked.

There’s also another reason that terribly slows the loading process. WordPress and some other plugins might some times try to access a remote URL using cURL or other methods. If the remote server is slow or doesn’t reply immediately, the performance impact will be drastic. I suggest you try and load your website with no network adapter enabled, if it’s a local installation.