4 ms·
I don't think you even need to go that far. Can you optimise your implementation so that parallelisable chunks could run across all your cores? This sounds like
by ricksplat 10y ago
I don't think you even need to go that far. Can you optimise your implementation so that parallelisable chunks could run across all your cores? This sounds like the kind of think Excel may even do "automatically" but like many such things you usually need to structure your implementation in a suitable fashion.
- imglorp 10y agoIt would be kind sad if MS didn't already do that.
- ricksplat 10y agoIt's a NP complete problem. What I mean is, there is no generalisable solution to this. Optimising algorithms employed by sophisticated technical users (think `-O`optimisation; Java hotspot) typically employ sets of heuristics that run the code in more optimal ways based on certain patterns. To trigger these you usually have to be aware of them and write your code in a certain way. Given that Excel isn't really targeted at these kinds of user (heavy lifting typically offloaded to external libraries) it wouldn't be "Sad" if they didn't already do it, and I would in fact be pleasantly surprised. Which is why I'm asking the question. EDIT: Turns out you're right! https://msdn.microsoft.com/en-us/library/office/bb687899.aspx https://msdn.microsoft.com/en-us/library/office/bb687899.asp...
- dastbe 10y agoTo trigger these you usually have to be aware of them and write your code in a certain way. Compiler writers also look for common patterns in people's code and figure out how to optimize them. when you have both years (decades) of legacy code and developers who don't even know what patterns are optimized, you as a compiler writer need to optimize the code that is being written.
- ricksplat 10y agoYes that's what I meant. Common patterns = Heuristics as a developer you need to be aware of the common patterns the compiler is looking for.
- ddeck 10y agoExcel uses multiple cores for calculations. You can configure how many to prevent it sucking up the entire CPU for long calculations. It's a pretty easily parallelizable problem since the sheet is just a dependency tree with the cells as nodes. The build-in functions (e.g. probability distributions etc.) could also be multi-threaded, although I'm not sure if they are. Our external API called from cells was written in C++ and already multi-threaded. More info here: https://msdn.microsoft.com/en-us/library/office/bb687899.aspx https://msdn.microsoft.com/en-us/library/office/bb687899.asp...