Модульные тесты для проверки временной сложности

x=$(command)

где x - переменная, которой вы хотите назначить вывод команды.

В вашем случае не ставьте пробел до или после оператора присваивания =

StringVar=' abc  '
x=$(echo "$StringVar" | awk '{$1=$1};1')
5
задан Mihai Limbășan 31 March 2009 в 19:25
поделиться

4 ответа

Возможное решение состояло бы в том, чтобы протестировать с функцией Filip с 1 повторением, затем 100, затем 1000, затем 10000 (и т.д.) и вывести результаты на печать на графике для определения временной сложности. Или используйте математику для получения самого высокого факторного различия между каждым выполнением. Я не уверен, как Вы протестировали бы пространство как бы то ни было.

Я не думаю, что вывод был бы простой передачей или сбоем, если нет существующий алгоритм, чтобы получить самый высокий фактор (N^2 и т.д.) и выдержать сравнение с этим.

1
ответ дан 14 December 2019 в 09:02
поделиться

В то время как аспектом времени является вполне прилично ответ застрахованного Filip и Josh's, проблема пространства более сложна, поскольку рассматриваемый код склонен освободить любую память и ресурсы, это использовало на завершении. Таким образом я предположил бы, что поблочное тестирование не особенно полезно отдельно для определения сложности пространства. Вам был бы нужен или датчик или в некоторый другой монитор, работающий asynchonously с Вашим coude тем, чтобы быть протестированным.

Я сказал бы, что обеспечение некоторых журналов на месте / трассировки в протестированном коде будет самым легким решением, возможно удаленным из сборки конечных версий.

1
ответ дан 14 December 2019 в 09:02
поделиться

Это - совершенно положительная сторона, которую Вы поднимаете. Уверенный Вы используете Модульный тест на это.

Модульный тест является главным образом "способом" протестировать результат Вашего кода. Вы тестируете, если это делает то, что это, как предполагается, делает и что это перестало работать, когда Вы хотите, чтобы это перестало работать.

Время и пространство является двумя переменными, которые очень важны, и Вы могли бы "хотеть" высокую скорость и низко расположить стоимость с интервалами, но программа на самом деле делает противоположное, затем Вы получили ошибку, это - то, для чего модульного теста, чтобы найти ошибки и решить их.

Некоторый Псевдо Код Модульного теста на трудоемкий, Вы могли бы знать, как решить это, но это - довольно хороший способ протестировать его:

Unit_Test_To_See_If_X_Takes_More_Than_Y_Seconds(int max_milli_seconds)
{
    int current_millis = getMillis();

    do_operations_on_objects_and_functions();

    int millis_after_executions = getMillis();

    int elapes_millis = millis_after_execution - current_millis;

    if ( elapsed_millis > max_milli_seconds )
      Assert(ERROR);

}

Также, когда Вы думаете об этом, у Вас может быть слишком много тестов? Нет Вы не можете. Хорошо протестировать на все результаты, даже если Вы тестируете на "глупые" вещи, если Вы не тестируете на результат, и ошибка развита, это означает, что это не существует просто, потому что Вы не видели его, или Вы не протестировали на него?:)

4
ответ дан 14 December 2019 в 09:02
поделиться

У меня была подобная проблема, когда я настраивал алгоритм. То, что я сделал, должно было циклично выполнить его и затем разделенный на количество циклов и большого-O значения. Затем я назвал этот "q" или "качественное значение". Интересно, величина была более или менее постоянной, как я ожидал, и немного выше для плохих параметров. Точка при рассмотрении определения больших-O что Вы получаете измерение "менее доминирующих" вычислений около основного. Они являются часто постоянными или имеют более низкую сложность. В моем случае это было немного линейно, но тем не менее ничто для размышления о.

Мое предложение, для вычисления таких качественных значений. Затем Вы видите, существует ли внезапное повышение, которое указывает на побочный эффект Ваших последних изменений, который повреждает Ваше предположение сложности.

1
ответ дан 14 December 2019 в 09:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: