Phase one · Construction
Get to a feasible first draft, fast
The solver places shifts one at a time using a fast, greedy heuristic: given the demand and the people available, fill the slots that are hardest to fill first. The result is rarely good. It is meant to be a starting point a search can improve on, not a finished roster.
Phase two · Local search
Improve it, move by move, until time runs out
From that first draft, the solver repeatedly tries a small change, swap two people's shifts, move an assignment, and keeps the change if it improves the score. It keeps doing this for as long as you let it, or until it stops finding improvements for a while, at which point it hands back its best roster.
You set the time budget, not us: shorten it for a quick draft while you are still shaping demand, lengthen it for the pass you intend to publish. We do not print a solve-time figure on this site, because the honest answer is “however long you gave it,” not a number that would read as a benchmark we have not actually measured at your scale.