Небольшая оптимизация цикла for() при использовании STL итераторов. / c++ :: программирование :: код :: цикл :: anon

c++ программирование цикл код anon 
Небольшая оптимизация цикла for() при использовании STL итераторов. Увеличивает скорость цикла примерно на 25 %. Тестировал только с vector (динамический массив), но будет работать на всех.
P.S. Во многих уроках по C++ можно увидеть такой вариант (он не оптимизирован) :
vector ints;
for(vector::iterator it = ints.begin(); it != ints.end(); it++);
1
2
3
4
5
б
7
8
9
10
#include <vector> using namespace std; void foo()
{
vector<int> ints;
//	|----------------Инициализация	|	-	| Проверка | - | Переход |
for( vector<int>::iterator its = ints.begin(),ite = ints.end(); its!=ite; its++ )
{
II...
},c++,программирование,цикл,код,anon
Подробнее
1 2 3 4 5 б 7 8 9 10 #include <vector> using namespace std; void foo() { vector<int> ints; // |----------------Инициализация | - | Проверка | - | Переход | for( vector<int>::iterator its = ints.begin(),ite = ints.end(); its!=ite; its++ ) { II... }
c++,программирование,цикл,код,anon
Еще на тему
Развернуть
хорошо, но ты вкладкой ошибся
anon anon 19.10.201321:03 ответить ссылка 0.1
Я хочу посмотреть реакцию народа... надо это...буду думать и годное выкладывать.
anon anon 19.10.201321:23 ответить ссылка 0.0
И какую реакцию ты ожидаешь? Если я выложу доказательсво закона Бойля-Мариотта то всем будет похуй как и на твои писульки, это развлекательный ресурс, а не форум программистов
anon anon 19.10.201321:29 ответить ссылка 0.0
Если ты выложишь док-во Бойля-Мариотта то мне будет интересно. Ну ок...выпилю.(чуть пожже)
anon anon 19.10.201321:32 ответить ссылка 0.0
25% процентов это только в дебаг версии. Если компилировать релизную версию с полной оптимизацией - то выигрыша уже не заметно, компилятор достаточно сообразительный, что микросовтовский, что интеловкий. Это раз. И если хочется заниматься оптимизацией - никаких стл или бустов, пиши сам, использование даже банального SSE даст заметный выигрыш, если руки прямые, да и на стандартное выделение/освобождение памяти в том векторе кучу времени сожрёт во многих случаях. Это два.
anon anon 19.10.201321:39 ответить ссылка 0.1
А у стл нету SSE? Странно.
anon anon 19.10.201321:40 ответить ссылка 0.0
В стл обычный сишный код. И как он будет заменяться на SSE при компиляции зависит от компилятора. И от опций компилирования. А компиляторы с SSE пока ещё тупят, и не всегда используют его там, где его реально можно использовать.
anon anon 19.10.201321:52 ответить ссылка 0.1
Хм, тоесть ints.end не кешируется, а ищется каждое обращение? Странно

Vector.Count() - точно кешируется.
anon anon 19.10.201321:39 ответить ссылка 0.0
А теперь включи оптимизацию в компиляторе, ибо end - отлично инлайнится и о компилятор сам выполнит такую оптимизацию.
anon anon 19.10.201321:40 ответить ссылка 0.1
Включил, посмотрел...понял что был не прав, зато оптимизация дебага :)
anon anon 19.10.201321:54 ответить ссылка 0.0
оптимизация дебага - дело неблагодарное :)
anon anon 19.10.201321:58 ответить ссылка 0.0
это так забавно когда анон разговаривает сам с собой иммитируя живое общение :3
anon anon 19.10.201321:58 ответить ссылка -0.1
Для меня программирование как магия.Плиз ,разбирающиеся личности,скажите насколько ахуенно содержание поста?
anon anon 19.10.201322:05 ответить ссылка 0.0
Ну, производительность повышает, но не там, где нужно :)
anon anon 19.10.201322:10 ответить ссылка 0.0
ммм... да точно! я так и думал!
anon anon 19.10.201322:12 ответить ссылка 0.0
Уёпок не пиши за меня
anon anon 19.10.201323:16 ответить ссылка 0.0
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
Отличаете ли вы цикл от рекурсии? JMP
=©гащэд,чю®