Я пытаюсь сравнить операцию, которая требует дорогостоящей подготовки, исключая использование StopTimer () и StartTimer (). В частности, я тестирую вставку n-го элемента в отсортированный список.
Пример кода:
n := 100
// Run the process b.N times
for i := 0; i < b.N; i++ {
// Stop the timer for our expensive preparation work (inserting n-1 items)
b.StopTimer()
// ...
// Insert n-1 items
for j := 1; j < n; j++ {
m.InsertItem(o)
}
// ...
// Resume the timer
b.StartTimer()
// Insert the nth item
m.InsertItem(o)
}
Проблема в том, что эвристический анализ Go ограничивает b.N в зависимости от времени, а не от общего времени. В итоге он запрашивает 5-миллиметровую (5000000) итераций для вставки 100-го порядка, и это занимает больше времени, чем разумно (я хочу сравнить до 10-миллионной позиции).
Есть ли способ указать максимальное значение b.N для конкретного теста в инструменте тестирования Go? Я не нашел ничего в документах сам.