Skip to content

Make performance thresholds configurable #263

@jan-ferdinand

Description

@jan-ferdinand

For many operations on and with polynomials, we have different algorithms that do the same thing but exhibit different performance characteristics. In the public API, we expose dispatcher methods that automatically chose the fastest algorithm. To the end user, this is transparent. The dispatch decision points are hardcoded. Examples of such decision points are FAST_MULTIPLY_CUTOFF_THRESHOLD, REDUCE_BEFORE_EVALUATE_THRESHOLD_RATIO, or the ad-hoc constant against which squared_coefficient_len is compared in Polynomial::square().

In order to simplify performance tuning, both for us when trying to identify better defaults and for power users that want to squeeze everything out of their machines, these decision points should be configurable. e9fae6a introduces the config module which could act as the central configuration place.

I don't think that it must be comprehensive what each of the decision points means in detail. Given their number and interdependencies, such a task seems infeasible anyway; if a detailed understanding of some particular decision point is required, it's probably easier to read the code instead.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions