Recently I was asked to run a very lengthy, intensive process. I wrote and executed the code, and I decided to run it on multiple PCs to maximize speed due to the overall size of the ask. I noticed immediately that my 2nd PC (3 years older than my current one), ran the process 10x faster than my current PC. I was obviously stunned.
This morning I dug into it. There seems to be an issue in Mapinfo 17.
The same sample code (processing 1000 rows), with the same data, runs at different speeds on my newer PC, depending on the version of Mapinfo I use. On MI17.01x64, that code takes 245s to process. On Mapinfo 16.0.3x64, it runs for 54s. And on Mapinfo 15.2.0x64 it runs for 58s. I ran it several times to verify the runtimes.
My 2nd PC is running Mapinfo 15.2.4x64 and it runs that code in 23s. I'm less concerned with the delta between the two PCs as I am with the delta on the same PC in Mapinfo 17 vs 16 and 15.
Anyone care to explain why MapInfo 17 is running 4-5 times slower than older Mapinfo's?
As for what the code is doing, its looping on 1000 rows of a table. For each row its making a simple select from another table based on a value obtained from that row, and then doing a large SQL match using intersecting objects between the object from that row and the 2nd table. The simple select and the SQL seem to be each taking up roughly 40% of the time required each, the rest being other parts of the code. Pretty straightforward stuff.
I would love to hear why we think this is happening. And before someone chimes in, I do have full concurrency on, but it doesn't matter since non of these functions use concurrency.
Ali