WIP: Added heap sort, tested against aseba_comb_sort and C++ std::sort#688
WIP: Added heap sort, tested against aseba_comb_sort and C++ std::sort#688shilingwang wants to merge 2 commits into
Conversation
|
Here (macOS 10.12.6, clang 8.1.0, Core i7-6700K, -O2), It would be very interesting to test on the typical target processor of Aseba, I expect heap sort to be proportionally faster when the processor becomes more primitive. |
|
Do we have a way to run performance test on a simulator of the target's device? |
|
The Microchip simulator has a Stopwatch that can measure the number of milliseconds between breakpoints. So it should be possible to test the timing in the MPLABX IDE simulator. While it is possible to submit a script of commands to Microchip's command-line simulator If you write an Aseba language program that tests the sorting speed, for example by incrementing a counter with every |
|
That's a good idea. Actually we could also try with the physical robot. One just need to recompile the firmware. |
As described in issue #674, the complexity of
math.sort(comb sort) is worst case O(n^2) and best case O(n log(n)). Here I implement heap sort, which should be worst-case O(n log(n)) complexity. The test results (Linux x86_64, g++ 5.4.0, i7-5600U CPU, no optimisation) for comb sort, heap sort and c++ std::sort show that when the data are in random order, the three implementations are not much different and std::sort and comb sort are always a little bit better than heap sort. When the data are already in sorted order without duplication, heap sort is slower than the other two (no more than double). However, when the data is const, heap sort is much faster than comb sort (10 times or more).