No one is asking for this, but I'm sure there are performance enhancements to be made. For example, this past week I discovered that the huge scatter rendering method was calculating the cadence each time it was rendered, dramatically affecting performance. Fixing that is fairly inexpensive (easy to show that no new bugs are introduced), and it's worthwhile to go ahead low-hanging apples now and again.
I'm coming up with a set of benchmark scripts that can be used for testing now.
I started adding logger.entering and logger.exiting messages in the middle of oft-used routines, such as extent.
Another dirty secret of Autoplot is that fill is checked with fuzz, because the data is accessed as doubles. I should probably introduce the rule that the fill value must be a double.
I experimented with doing a brute-force implementation of range, which avoids using the DataSetIterator. Comparing this to the simpleRange used in autorange, and Ops.extent:
It seems clear that the DataSetIterator performance penalty is bigger than I would have imagined, and I should start recoding hotspots to avoid its use.
Here's the study code:
Last edit: Jeremy Faden 2015-09-12
I was looking at the LanlNNRebinner for low-hanging fruit, and I've made it avoid calls to locate the y pixel locations repeatedly when the y tags are rank 1. I was able to get about a factor of two speed up from this.
Also I played with caching the RebinDescriptor units converter, where I can get a factor of two improvement. This is simply fast, but for huge rank 1 datasets this effect may be visible. See RebinDescriptorBenchmark.
I spent some time back in May 2019 looking for hot spots in the code which would benefit from optimization. The simpleRange code in AutoRangeUtil has the rank 1 branch where it zips through without using an DataSetIterator.
Masafumi just pointed out that this is now causing problems for his code because of a difference in how infinite data is handled, and I've tracked this down (to between 20190420a and 20190427a) with the testagator. See https://github.com/autoplot/dev/tree/master/bugs/2019/20190815 .
Last edit: Jeremy Faden 2019-11-27
See also https://sourceforge.net/p/autoplot/bugs/1801/