title: Why is my Strassen's Matrix Multiplication slow?
body: <p>I wrote two Matrix Multiplications programs in C++: Regular MM <a href="http://pastebin.com/HqHtFpq9" rel="noreferrer">(source)</a>, and Strassen's MM <a href="http://pastebin.com/USRQ5tuy" rel="noreferrer">(source)</a>, both of which operate on square matrices of sizes 2^k x 2^k(in other words, square matrices of even size). </p>
  
  <p>Results are just terrible. For 1024 x 1024 matrix, Regular MM takes <code>46.381 sec</code>, while Strassen's MM takes <code>1484.303 sec</code> (<code>25 minutes</code> !!!!).</p>
  
  <p>I attempted to keep the code as simple as possible. Other Strassen's MM examples found on the web are not that much different from my code. One issue with Strassen's code is obvious - I don't have cutoff point, that switches to regular MM. </p>
  
  <p>What other issues my Strassen's MM code has ???  </p>
  
  <p>Thanks !</p>
  
  <p>Direct links to sources<br>
  <a href="http://pastebin.com/HqHtFpq9" rel="noreferrer">http://pastebin.com/HqHtFpq9</a><br>
  <a href="http://pastebin.com/USRQ5tuy" rel="noreferrer">http://pastebin.com/USRQ5tuy</a></p>
  
  <p>Edit1.
  Fist, a lot of great advices. Thank you for taking your time and sharing knowledge. </p>
  
  <p>I implemented changes(kept all of my code), added cut-off point.
  MM of 2048x2048 matrix, with cutoff 512 already gives good results.
  Regular MM: 191.49s
  Strassen's MM: 112.179s 
  Significant improvement.
  Results were obtained on prehistoric Lenovo X61 TabletPC with Intel Centrino processor, using Visual Studio 2012.
  I will do more checks(to make sure I got the correct results), and will publish the results.</p>