Speculative execution
Now that we have seen close to three different implementation strategies of the Schönhage-Strassen algorithm, how do we perform deliberate calibration, and decide which is the best strategy (now that we understand that it has a close co-relation with its environment and associated resources)?
Note
This is where this important pattern really helps us make a decision, when deviations against anticipated results are unavoidable, and need to be smartly addressed.
We would schedule asynchronous tasks for each of these strategies for execution, leverage the WaitAny
method of the Task
class to wait for one of the operations to complete (one that finishes first), and attempt to cancel all others. On a smart-learning front, this could be done periodically to continuously calibrate and cache your strategy for mass consumption. It's an aspect of machine learning where the program intelligently adapts to sieve and use effective algorithms. See the following code that incorporates...