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

Поиск:

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


Опытный
**


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

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



Доброго времени суток. Решил я посмотреть есть ли причины использовать std::find_if (за одну такую фразу, думаю, многие меня побьют =))
Сделал тестовый пример. Положил в vector 10000 строк "test" и сделал два варианта поиска:
find_if
Код

struct Functor
{
    bool operator() (const string &str)
    {
        int index = str.find("lol");
        return false;
    }
};
...
for(int y=0; y<m_count; ++y)
     find_if(items.begin(), items.end(), Functor());


поиск перебором
Код

for(int y=0; y<m_count; ++y)
{
    vector<string>::iterator Iter;
    for(Iter=items.begin(); Iter!=items.end(); ++Iter)
    {        
        if(-1 != (*Iter).find("lol"))
            break;
    }        
}

при m_count = 1000, find_if отработал за 4 секунды, а поиск перебором аж за 10. за счет чего так получается? Может я конечно многого не знаю, но я считал, что find_if также должен пройтись по всем элементам массива + ведь еще "тратится время" на вызов функтора. а в результате имеем, что быстрее. В чем причина?
PM MAIL WWW ICQ   Вверх
Alca
Дата 26.2.2010, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Можно глянуть исходники STL


--------------------
PM WWW ICQ Skype Jabber   Вверх
andrew_121
Дата 26.2.2010, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



Цитата(xTr1m @  26.2.2010,  13:17 Найти цитируемый пост)
за счет чего так получается?

потому как std::find_if() не ищет тупым перебором.
а вообще, STL не зря так назвали! и не идиоты пишут стандартные алгоритмы!


Это сообщение отредактировал(а) andrew_121 - 26.2.2010, 14:11


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


Бывалый
*


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

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



Цитата(andrew_121 @ 26.2.2010,  12:48)
Цитата(xTr1m @  26.2.2010,  13:17 Найти цитируемый пост)
за счет чего так получается?

потому как std::find_if() не ищет тупым перебором.
а вообще, STL не зря так назвали! и не идиоты пишут стандартные алгоритмы!

А разве возможно искать что то не в отсортированном массиве, не используя перебор? smile 
--------------------
C++(STL) / DHTML(CSS) / Javascript / PHP  Developer
PM MAIL ICQ Skype   Вверх
xTr1m
Дата 26.2.2010, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот я прошу хотя бы намекнуть, как можно организовать поиск в неупорядоченном массиве без прохождения его всего. А в моем случае поиск как раз проходит по всем элементам, так как я ищу элемент, которого там нет.
PM MAIL WWW ICQ   Вверх
chaos
Дата 26.2.2010, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


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

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



xTr1m, а почему ты решил что узкое место именно перебор? может тормоз сравнение?!

Добавлено через 1 минуту и 17 секунд
ЗЫ какова смысловая нагрузка "for(int y=0; y<m_count; ++y)" ?
PM WWW   Вверх
xTr1m
Дата 26.2.2010, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Смысловая нагрузка
Цитата

for(int y=0; y<m_count; ++y)

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

А сравнение то везде одинаково. собственно бог с ним, со сравнением. меня интересует, что же такое происходит во время find_if, может он просто не по всем элементам проходит =)))
Чего исходник пока найти не могу
PM MAIL WWW ICQ   Вверх
Ozerich
Дата 26.2.2010, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Искать в неотсортированном массиве быстрее чем за линейное время не возможно. Используя бинарный поиск мы за log N(N - длина массива) можем найти элемент но массив должен быть отсортирован.
--------------------
C++(STL) / DHTML(CSS) / Javascript / PHP  Developer
PM MAIL ICQ Skype   Вверх
andrew_121
Дата 26.2.2010, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



Цитата(Ozerich @  26.2.2010,  13:51 Найти цитируемый пост)
А разве возможно искать что то не в отсортированном массиве, не используя перебор?

я ставил акцент на слово - тупым.

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

template<typename _RandomAccessIterator, typename _Predicate>
  _RandomAccessIterator
  __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last,
         _Predicate __pred, random_access_iterator_tag)
{
    typename iterator_traits<_RandomAccessIterator>::difference_type
        __trip_count = (__last - __first) >> 2;

    for (; __trip_count > 0; --__trip_count) {
        if (__pred(*__first))
            return __first;
        ++__first;
    
        if (__pred(*__first))
            return __first;
        ++__first;
    
        if (__pred(*__first))
            return __first;
        ++__first;
    
        if (__pred(*__first))
            return __first;
        ++__first;
    }

    switch (__last - __first) {
        case 3:
            if (__pred(*__first))
                return __first;
            ++__first;
        case 2:
            if (__pred(*__first))
                return __first;
            ++__first;
        case 1:
            if (__pred(*__first))
                return __first;
            ++__first;
        case 0:
        default:
            return __last;
    }
}

хороша оптимизация? smile 


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


Опытный
**


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

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



О, спасибо. С ходу не осилил, приду домой - буду курить.
PM MAIL WWW ICQ   Вверх
Shaggie
Дата 26.2.2010, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Прибавь к этому ещё два небольших момента.

Цитата(xTr1m @  26.2.2010,  13:17 Найти цитируемый пост)
for(Iter=items.begin(); Iter!=items.end(); ++Iter)

У тебя в цикле end() вычисляется каждый раз заново (даже если это всего лишь разница между указателями), а в find_if() приезжает уже готовое значение.

Цитата(xTr1m @  26.2.2010,  13:17 Найти цитируемый пост)
+ ведь еще "тратится время" на вызов функтора

Код функтора встраивается и оверхеда на его вызов нет.

Цитата(xTr1m @  26.2.2010,  14:11 Найти цитируемый пост)
О, спасибо. С ходу не осилил

Цикл сам по себе штука медленная, поэтому для оптимизации их разворачивают. Где-то это делает умный компилятор, где-то разработчики time critical библиотек общего назначения (как в данном случае), в отдельных грустных случаях разворачивать цикл приходится самому программисту.
В данном случае на один шаг цикла происходит четыре операции сравнения.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
xvr
Дата 26.2.2010, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(xTr1m @ 26.2.2010,  13:17)
Код

struct Functor
{
    bool operator() (const string &str)
    {
        int index = str.find("lol");
        return false;
    }
};
...
for(int y=0; y<m_count; ++y)
     find_if(items.begin(), items.end(), Functor());

при m_count = 1000, find_if отработал за 4 секунды, а поиск перебором аж за 10. за счет чего так получается?

Может за счет того, что твой Functor всегда возвращает false? Компилятор вообще имеет право вообще удалить вызов и find_if и охватывающего цикла

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


Опытный
**


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

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



xvr,  надеюсь он так не самовольничает =)
PM MAIL WWW ICQ   Вверх
Леопольд
Дата 26.2.2010, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(xTr1m @  26.2.2010,  15:07 Найти цитируемый пост)
xvr,  надеюсь он так не самовольничает =) 

Почему-то мне кажется что время замерялось на дебаг версии. Попробуй замерить на релизах... smile

Это сообщение отредактировал(а) Леопольд - 26.2.2010, 18:29


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
xvr
Дата 26.2.2010, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(xTr1m @ 26.2.2010,  15:07)
xvr,  надеюсь он так не самовольничает =)

Почему бы нет - все функции inline, не имеют побочных эффектов, функтор константа. Вполне может все свернуть.
Вот если привести функтор в соотвествие с тем, что было написано для 2й версии, тогда можно сравнивать

PM MAIL   Вверх
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   Вверх
andrew_121
Дата 1.3.2010, 18:49 (ссылка)    | (голосов:7) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



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

зачем себя цитировать? нелепо выглядит.



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



****


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

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



andrew_121, давай тесты качества бинарного кода который генерит msvc юзая STL майкрософта VS g++ юзая STL gcc
разумеется с учетом различных опций компиляции, в том числе дебаг-версии

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


Кодофей
****


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

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



GoldFinch,
1. нужно утвердить какой-то код.
2. каким образом сравнивать бинарники?(или же асмовый выход?)


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



****


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

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



andrew_121
1. не  вижу принципиальной разницы какой код сравнивать, лишь бы там было побольше STL и поменьше CRT, других либ и пользовательского кода.
2. асм вывод компилятора, или дизасм - имхо без разницы, выглядит почти одинаково, хотя лучше бы Intel синтаксис, а не AT&T
PM MAIL ICQ   Вверх
Lazin
Дата 1.3.2010, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(andrew_121 @  1.3.2010,  18:49 Найти цитируемый пост)
при нежелании что-то признавать, любые аргументы будут опущены

а что мне признавать? в той теме сравнивали массив и вектор, а вовсе не разные реализации STL. Я перечитал тему, и не нашел нормальное сравнение стандартных библиотек.

Цитата(andrew_121 @  1.3.2010,  18:49 Найти цитируемый пост)
если любопытно, и не боишься признать ацтойность того чем пользуешься, скомпиль любой код использующий STL разными компиляторами, и сравни.
Зачем мне что-то тебе доказывать? К тому же скорость - далеко не самый важный показатель для меня. К примеру, отладка итераторов для меня важнее небольшого выигрыша в скорости. Скажу по секрету, я специально отключаю в релизе некоторые оптимизации и оставляю отладочную информацию, что-бы было удобнее анализировать дампы и отлаживать код. Если скорость работу генерируемого кода у GCC - на уровне (я не говорю - больше или меньше, так как скорее всего они мало отличаются друг от друга, да я и не сравнивал, так как не интересно), то по другим параметрам, GCC меня абсолютно не устраивает.
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 1.3.2010, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Цитата(Lazin @  1.3.2010,  21:09 Найти цитируемый пост)
скорее всего они мало отличаются друг от друга

в самом деле, вряд ли существует много способов оптимально сгенерировать один и тот же алгоритм, особенно если он простой

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


Кодофей
****


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

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



Цитата(Lazin @  1.3.2010,  21:09 Найти цитируемый пост)
Зачем мне что-то тебе доказывать?

опять переиначил. себе.

Цитата(GoldFinch @  1.3.2010,  21:35 Найти цитируемый пост)
в самом деле, вряд ли существует много способов оптимально сгенерировать один и тот же алгоритм, особенно если он простой

с простыми - да.
так какой код сравнивать будем? есть что-то подходящее?


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


Эксперт
****


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

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



Цитата(andrew_121 @  1.3.2010,  22:42 Найти цитируемый пост)
опять переиначил. себе.

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

если для тебя так важно, кричать на форумах, что dinkumware stl - отстой, то докажи это, иначе - кыш отсюда трололо smile
PM MAIL Skype GTalk   Вверх
Леопольд
Дата 2.3.2010, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

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


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
azesmcar
Дата 3.3.2010, 09:46 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



На самом деле существенно различаться реализации STL не могут, так как стандарт диктует свои правила, практически все алгоритмы ограничены в сложности, а если find работает с логарифмической сложностью, то большой разницы быть не может, не так уж и много возможных реализаций, в реализации STL от gcc используют Устройство Даффа для оптимизации некоторых циклов, это дает небольшой прирост производительности, но я не думаю что разница будет заметна и скорее всего каждый пишет STL с учетом специфики оптимизатора родного компилятора.

Это сообщение отредактировал(а) azesmcar - 3.3.2010, 09:47
PM   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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