There's more to experience when you log in!
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.
Interesting case, @Ali Mehrabian?...
Can you try a few things and recompare the times.
We have had another similar report where especially the number of loaded tools seemed to have a big effect on the performance.
This might help us nail down the cause of this.
Its the "noselect" clause. Adding that cut the runtime down to 62s. Removing windows had no effect. Removing all tools additionally cut the time down to 55s. But the real issue seems to be the noselect clause, which wasn't an issue in MI16 or MI15.
62s. Noselect + no Tools running got the 55s. But either way the noselect was the major factor yes.
I've noticed similar performance downgrades between 32 and 64 bit.
I did some testing on Ordnance Survey CodePoint with Polygons and found 64 bit was consistently taking around twice as long to process as a 32 bit instance on the same machine. (1hr45 mins vs 55 mins)
I'll probably share the MapBasic code/results in another thread at some point.
Could a missing NoSelect explain this performance downgrade, @Brendan Stone??
Possibly, I'll do some more testing - will let you know, thanks.
Having similar issues. Running the same mapbasic tool on 15 (same computer, same data set) seemingly sees (in this instance) an approx. 84% increase in performance as opposed to running it in Mapinfo Pro 17. Added NoSelect. Shutdown all other tools.
Any further update on this issue....
Select * From .... Into SomeQueryName NoSelect Hide