2010-04-26 3 views
3

Идеальная идея иметь неопознанную информацию во время разработки, как обозначение Ландау, для того, чтобы знать затраты времени на функции. Поэтому он должен быть документирован в источниках, не так ли?Поддержка опоры Ландау (ide)

Я ищу инструменты, которые могут его вычислить.

+1

Интересно ... Я не знаю никаких инструментов, которые могли бы вычислить Big-O части кода. Не уверен, что такие вещи существуют (или даже возможны), но если есть, мне было бы интересно их увидеть. – FrustratedWithFormsDesigner

+0

Например, если разработчики языка будут документировать большие-0 для атомных операций, это может быть возможно. Или, если у вас есть метод с некоторыми параметрами (коллекциями), которые могут выполняться в модульном тесте и длительность протокола выполнения метода с различной длиной коллекции. Вот как можно вычислить O. – Jeriho

ответ

3

В общем случае асимптотическая сложность произвольного алгоритма неразрешима, на Rice's theorem.

Но на практике вы часто можете сделать хорошее предположение, многократно выполняя алгоритм на различных входах (размеров, охватывающих несколько порядков), записывая фактическое время процессора и устанавливая кривую. (Вы должны выкидывать точки данных с очень короткими промежутками времени, так как в них будет преобладать шум. Кроме того, во время работы JITed, например, виртуальная машина Java, обязательно запустите эту функцию некоторое время, прежде чем запускать синхронизацию, чтобы убедиться, что виртуальная машина разогрелся.)

Смежные вопросы