Multithreaded calculation
Benchmarks for the threaded
algorithm are shown here, for unmasked z
, a
total_chunk_count
of 40, LineType.ChunkCombinedOffset
and
FillType.ChunkCombinedOffsetOffset
on a 6-core processor.
For the simple
dataset contour calculations are faster with more threads but only slightly. The
speedup with 6 threads is only about 1.8 for both lines()
and
filled()
. This problem dataset is not computationally expensive
enough to justify the use of multiple threads.
For the random
dataset contour calculations scale much better with increasing number of threads.
Using 6 threads the speedup is between 4.1 for lines
and 4.7 for filled
.
Note
Whether it is worth using threaded
rather than serial
for a particular problem depends on
the complexity of the dataset and what the calculated contours are to be used for. If they are
only needed for rendering using the Matplotlib Agg renderer, then for complicated problems the
rendering time usually far exceeds the calculation time so a reduction in calculation time may
not be of much real-world benefit.
Warning
The threaded algorithm is work in progress and should be considered experimental. It works fine
in an isolated environment using the contourpy
tests and benchmarks, but needs to be
rigorously tested in real-world environments that that include mixed Python/C++ code and multiple
threads before it can be considered production quality.