Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Для новичков > Сравнение двух функций |
Автор: MIX55 3.4.2007, 11:21 |
Есть две функции поиска подстроки в строке (предположим Function_1 и Function_2). Вопрос в следующем: как установить какая из функции "быстрее работает"? |
Автор: Rennigth 3.4.2007, 11:25 |
Дайтека подумать... вызвать раз так 100000 в цыкле каждую из них + GetTickCount. Добавлено через 31 секунду В чем может быть проблема? |
Автор: ivan219 3.4.2007, 16:00 |
Поищи здесь -> http://forum.vingrad.ru/topic-21411.html Добавлено через 8 минут и 40 секунд http://vingrad.ru/DELPHI-ART-002245 |
Автор: MIX55 3.4.2007, 16:14 | ||
в том то и вопрос. Один из вариантов предложенный Rennigth хорошо. Но из одного из этого нельзя сделать вывод что Function_2 работает быстрее(медленнее) Function_2. |
Автор: Sunvas 3.4.2007, 16:32 |
А исходного кода функций разве нет? |
Автор: Yanis 3.4.2007, 16:58 | ||
Почему? |
Автор: Alexeis 3.4.2007, 18:33 |
Потому, что есть такая вещь как кэширование. Второй и последующий запуски могут производиться намного быстрее первого. Если уж так делать, то нужно подставлять совершенно разные данные. |
Автор: remax 4.4.2007, 13:47 | ||
Если разница во времени исполнения этих функций незначительная, то, безусловно, вопрос становится чисто риторическим и на результат тестирования будет влиять и кеш и направление ветра. Но, если речь идет о 10-15% (и больше), то ничего проще и эффективнее чем предложил Rennigth, просто нет. Конечно, можно попробывать оценить скорость выполнения этих функций исходя из теоретических подходов, например, все знают, что сложение - быстрее, чем умножение, а целочисленные операции быстрее вещественных. Однако, использование такого подхода, на мой взгляд, малоэффективно и ненадежно. Добавлено через 7 минут и 57 секунд
Ага, только кэширование относится в первую очередь к коду программы, а не к данным, поэтому, подстановка совершенно разных данных особого смысла не имеет. Хотя, ничего сложного в разных данных нет - Random нам поможет и в цикле! А вообще, если серьезно, вопросы быстродействия, построения эффективных программ и т.д. и т.п. - очень важны и не тривиальны. Тестирование - не менее важная и сложная тема. И, к сожалению, нет готовых универсальных решений - в каждом конкретном случае необходимо учитывать конкретную специфику. |