Not to my knowledge, it seems extremely hard to get right. Even if you could do it, you still have to consider system load, number of cores, other os activities etc. A simplistic idea: would it be possible to start the calculation and simply wait until a certain time has passed and *then* move it to a separate thread, once you realize this calcuation is not trivial? Have you considered a [pool of threads][1] or a [dispatch queue][2]? At least that allows you avoid some issues with context switching etc and you can balance the system as a whole dynamically based on the total amount of usage and jobs. Are the calculations arbitrary block of code or can you model them as a map-reduce problem, or some other way that separates input data from code? That way you calculate how hard a problem is based on input size and sample the throughput for each item. [1]: http://en.wikipedia.org/wiki/Thread_pool_pattern [2]: http://en.wikipedia.org/wiki/Grand_Central_Dispatch