WP Cron as Fast as WordPress AJAX?

As @Milo said, WP Cron will only really get triggered when someone requests something from WP, that is visit any WordPress page (I haven’t looked up the exact details so I don’t know if, for example, an AJAX request would trigger the scheduled event).

You said that you have broken up the main task into smaller tasks – I think that you should take that approach and implement it into the AJAX method. You should break the main task into as many smaller subtasks as possible and chain them. Once the first subtask is completed – send another AJAX request to perform the next subtask. And so on, until everything is done. You don’t even have to rely on JavaScript to correctly chain the events – you can just pass the action name for the next-in-line subtask in your AJAX response and instruct your script to just send AJAX requests with action names that it got back from the server, until the server says that everything’s completed. This MVC-like approach will save you some time on maintaining your code – JS doesn’t have to be aware of the structure of how your subtasks are divided, it will just request data from the server until the server says that everything’s done.

This is the best approach when it comes to UX too, because you can continuously display task updates to the user after each subtask response arrives. Updating your user’s of the progress in time-intensive tasks is crucial. You can even store the progress/result of your subtasks in the database or cookies so that the user can continue the processing even after accidentally navigating off of the page!