Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение двух функций 
:(
    Опции темы
MIX55
Дата 3.4.2007, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


много работы
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 208
Регистрация: 23.10.2005
Где: Здесь

Репутация: нет
Всего: 4



Есть две функции поиска подстроки в строке (предположим Function_1 и Function_2). Вопрос в следующем: как установить какая из функции "быстрее работает"?


--------------------
Hарод, а как в дельфи писать паскалевские проги....?*********************************************Жизнь слишком коротка, чтобы писать на Assembler'e
PM MAIL ICQ   Вверх
Rennigth
Дата 3.4.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



Дайтека подумать... вызвать раз так 100000 в цыкле каждую из них + GetTickCount.

Добавлено через 31 секунду
В чем может быть проблема?


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Yanis
Дата 3.4.2007, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



MIX55
Для определения скорости работы функции надо проводить испытания.
Если попробовать разобраться в значении слова «Испытание», то можно наткнуться на понимае этого термина в теории вероятности.
Не сложно догадаться, что чем больше испытаний мы произведём для одной и другой функции, тем правдивость утверждения о скорости р аботы той или иной функции увеличивается.

Добавлено @ 14:44
Кратко и лаконично мои слова подтверждаются словами Rennigth:
Цитата(Rennigth @  3.4.2007,  12:25 Найти цитируемый пост)
Дайтека подумать... вызвать раз так 100000 в цыкле каждую из них + GetTickCount.



Это сообщение отредактировал(а) Yanis - 3.4.2007, 14:45


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
ivan219
  Дата 3.4.2007, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 5
Всего: 12



Поищи здесь -> http://forum.vingrad.ru/topic-21411.html

Добавлено через 8 минут и 40 секунд
http://vingrad.ru/DELPHI-ART-002245
PM MAIL ICQ   Вверх
MIX55
Дата 3.4.2007, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


много работы
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 208
Регистрация: 23.10.2005
Где: Здесь

Репутация: нет
Всего: 4



Цитата

чем больше испытаний мы произведём для одной и другой функции, тем правдивость утверждения о скорости работы той или иной функции увеличивается.

в том то и вопрос.
Один из вариантов предложенный Rennigth хорошо. Но из одного из этого нельзя сделать вывод что Function_2 работает быстрее(медленнее) Function_2. 

--------------------
Hарод, а как в дельфи писать паскалевские проги....?*********************************************Жизнь слишком коротка, чтобы писать на Assembler'e
PM MAIL ICQ   Вверх
Sunvas
Дата 3.4.2007, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 2
Всего: 89



А исходного кода функций разве нет?


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Yanis
Дата 3.4.2007, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



Цитата(MIX55 @  3.4.2007,  17:14 Найти цитируемый пост)
Но из одного из этого нельзя сделать вывод что Function_2 работает быстрее(медленнее) Function_2

Почему?


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 3.4.2007, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



Цитата(Yanis @  3.4.2007,  16:58 Найти цитируемый пост)
Почему? 

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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
remax
Дата 4.4.2007, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: нет
Всего: 5



Если разница во времени исполнения этих функций  незначительная, то, безусловно, вопрос становится чисто риторическим и на результат тестирования будет влиять и кеш и направление ветра. Но, если речь идет о 10-15% (и больше), то ничего проще и эффективнее чем  предложил Rennigth, просто нет. Конечно, можно попробывать оценить скорость выполнения этих функций исходя из теоретических подходов, например, все знают, что сложение - быстрее, чем умножение, а целочисленные операции быстрее вещественных. Однако, использование такого подхода, на мой взгляд, малоэффективно и ненадежно.

Добавлено через 7 минут и 57 секунд
Цитата(Alexeis @ 3.4.2007,  15:33)
Цитата(Yanis @  3.4.2007,  16:58 Найти цитируемый пост)
Почему? 

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

Ага, только кэширование относится в первую очередь к коду программы, а не к данным, поэтому, подстановка совершенно разных данных особого смысла не имеет. Хотя, ничего сложного в разных данных нет - Random нам поможет и в цикле!

А вообще, если серьезно, вопросы быстродействия, построения эффективных программ и т.д. и т.п. - очень важны и не тривиальны.  Тестирование - не менее важная и сложная тема. И, к сожалению, нет готовых универсальных решений - в каждом конкретном случае необходимо учитывать конкретную специфику.  


--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0837 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.