Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> find_if, засчет чего такая скорость? 
:(
    Опции темы
xTr1m
Дата 26.2.2010, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Пошел еще немного дальше
Код

for(int j=0; j<100000; ++j)
    find(items.begin(), items.end(), 5001);

Код

for(int j=0; j<100000; ++j)
    find_if(items.begin(), items.end(), F(5001));

find_if отрабатывает на порядок быстрее (вектор заполнен интами от 0 до 1000000)!!!!


хотя....что то у меня странные результаты получаются. сейчас вроде бы одинаковое время показывают

Это сообщение отредактировал(а) xTr1m - 26.2.2010, 23:25
PM MAIL WWW ICQ   Вверх
xTr1m
Дата 1.3.2010, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



посмотрел я файл <algorithm> и там такое
Код

template<class _InIt,
    class _Pr> inline
    _InIt _Find_if(_InIt _First, _InIt _Last, _Pr _Pred)
    {    // find first satisfying _Pred
    _DEBUG_RANGE(_First, _Last);
    _DEBUG_POINTER(_Pred);
    for (; _First != _Last; ++_First)
        if (_Pred(*_First))
            break;
    return (_First);
    }

template<class _InIt,
    class _Pr> inline
    _InIt find_if(_InIt _First, _InIt _Last, _Pr _Pred)
    {    // find first satisfying _Pred
    _ASSIGN_FROM_BASE(_First,
        _Find_if(_CHECKED_BASE(_First), _CHECKED_BASE(_Last), _Pred));
    return (_First);
    }

я что то не понял, STL везде разный? это я про
Цитата

вот код из STL поставляемой с gcc-4.5.0

PM MAIL WWW ICQ   Вверх
andrew_121
Дата 1.3.2010, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



Цитата(xTr1m @  1.3.2010,  09:54 Найти цитируемый пост)
я что то не понял, STL везде разный?

кстати, разница во времени какая?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
xTr1m
Дата 1.3.2010, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так в том то и дело, что та разница, которую я указал в первом посте и достигается за счет это (микрософтской) реализации find_if, и в ней нет оптимизации цикла,
так за счет чего тогда она выигрывает? =))
PM MAIL WWW ICQ   Вверх
Lazin
Дата 1.3.2010, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(andrew_121 @  1.3.2010,  11:51 Найти цитируемый пост)
а микрософтовская версия весьма убога. в прнципе как и все ее продукты
детский сад smile 
ms версия содержит средства для отладки, что-бы их отключить, нужно до включения заголовочных файлов STL написать - 
Код

#define SECURE_SCL 0


Добавлено через 3 минуты и 50 секунд
Цитата(xTr1m @  26.2.2010,  23:20 Найти цитируемый пост)
find_if отрабатывает на порядок быстрее (вектор заполнен интами от 0 до 1000000)!!!!

возможно это из-за того, что во время работы find_if - данные уже "горячие", то-есть лежат в кэше, а при первом проходе find - они "холодные", из-за чего происходит большое количество кэш промахов
PM MAIL Skype GTalk   Вверх
xTr1m
Дата 1.3.2010, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так в том то и дело, что та разница, которую я указал в первом посте и достигается за счет это (микрософтской) реализации find_if, и в ней нет оптимизации цикла,
так за счет чего тогда она выигрывает? =))
PM MAIL WWW ICQ   Вверх
xTr1m
Дата 1.3.2010, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так в том то и дело, что та разница, которую я указал в первом посте и достигается за счет это (микрософтской) реализации find_if, и в ней нет оптимизации цикла,
так за счет чего тогда она выигрывает? =))
PM MAIL WWW ICQ   Вверх
bsa
Дата 1.3.2010, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Попробуй сравнить свой исходный код с этим:
Код
for(int y=0; y<m_count; ++y)
{
    for(vector<string>::const_iterator i = items.begin(), e = items.end(); i != e; ++i)
        i->find("lol");
}


PM   Вверх
xTr1m
Дата 1.3.2010, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



в общем то сейчас не особо заметна разница (мерил на глаз без времени)
PM MAIL WWW ICQ   Вверх
xTr1m
Дата 1.3.2010, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



в общем то сейчас не особо заметна разница (мерил на глаз без времени)
PM MAIL WWW ICQ   Вверх
Lazin
Дата 1.3.2010, 15:59 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(andrew_121 @  1.3.2010,  15:57 Найти цитируемый пост)
ну и пусть. дело не в этом. а в том, что микрософтовская версия STL тормозливее gcc. наверное только борландовская может быть хуже.

ты code review проводил? smile

andrew_121, твои громкие и при этом столь же голословные заявления уже порядком поднадоели
PM MAIL Skype GTalk   Вверх
andrew_121
Дата 1.3.2010, 16:11 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



Цитата(Lazin @  1.3.2010,  15:59 Найти цитируемый пост)
при этом столь же голословные заявления

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


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Lazin
Дата 1.3.2010, 16:16 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



ссылку, или небыло
PM MAIL Skype GTalk   Вверх
andrew_121
Дата 1.3.2010, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



в одном соврал. не недавно это было.
http://forum.vingrad.ru/forum/topic-272092...родействие.html


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Lazin
Дата 1.3.2010, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



и каким образом ты сделал такие выводи по этой теме?

Цитата(Lazin @  1.3.2010,  15:59 Найти цитируемый пост)
твои громкие и при этом столь же голословные заявления уже порядком поднадоели 


 smile
PM MAIL Skype GTalk   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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