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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какой из методов итерации лучше, итераторы или индекс 
:(
    Опции темы
bsa
Дата 20.12.2009, 01:20 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Для программы:
Код
#include <vector>
int main()
{
   std::vector<int> x(100,0);
   for(int i = 0; i < 100; ++i)
       x[i] = 10;
   return 0;
}
Получается код:
Код
.L6:
        movl    $10, (%rax,%rdx) ;!!!!
        addq    $4, %rdx
        cmpq    $400, %rdx  ;!!!!
        jne     .L6
Тогда как для:
Код
#include <vector>
int main()
{
   std::vector<int> x(100,0);
   for(std::vector<int>::iterator i = x.begin(), e = x.end(); i != e; ++i)
       *i = 10;
   return 0;
}
Создается код:
Код
.L10:
        movl    $10, (%rsi) ;!!!!
        addq    $4, %rsi
        cmpq    %rsi, %rcx  ;!!!!
        jne     .L10

Вывод, второй код работает не медленнее первого, более того, скорее всего, даже быстрее, так как вычислительных операций процессором производится гораздо меньше: movl    $10, (%rsi) и movl    $10, (%rax,%rdx) немного отличаются, так как для выполнения второй необходимо сначала сложить регистры rax и rdx

Это сообщение отредактировал(а) bsa - 20.12.2009, 01:23
PM   Вверх
djamshud
Дата 20.12.2009, 01:47 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

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



>djamshud, может ты еще и доказать можешь

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

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

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

>тон, честно говоря, оставляет желать лучшего..тем более что отсыл идет в "пустоту"

Ищущий всегда найдет. Посмотрите сообщение товарища перед вами.

bsa, я не троллю). И вообще они меня обижают, дайте им ремня! :D.

bsa, если компилятор способен в итоге так компактно развложить итератор, то это просто здорово. На примере, что я делал в начале топика, с простым -O3, итератор чуток отставал на 0.05 - 0.01 секунды, но асм не смотрел, ибо ни бум бум.

ЗЫ! А почему тему в холиворы пренесли? Черт, вот так вот стоит высказать свой маленький емнипчик и тут же топик скатывается в... Ну понятно в общем.:)

Добавлено @ 01:50
Блин, я отчаянно защищаюсь, а мне еще и предупреждения вкатывают. Ну вас, злые вы.

Это сообщение отредактировал(а) djamshud - 20.12.2009, 01:50


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mes
Дата 20.12.2009, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(djamshud @  20.12.2009,  00:47 Найти цитируемый пост)
"Можно" всю жизнь означало "если хочется".

"можно" всегда (в програмировании) означало "хуже не будет", а за "хочется" полагаю (хоть собственного опыта и нет) начальник бы показал бы где некие членистоногие зимуют,
расставив точки над i в этой теме ))


Это сообщение отредактировал(а) mes - 20.12.2009, 02:37


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



****


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

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



bsa, ох уж этот страшный AT&T синтаксис %)

Добавлено через 5 минут и 35 секунд
Цитата(djamshud @  20.12.2009,  01:47 Найти цитируемый пост)
итератор чуток отставал на 0.05 - 0.01 секунды,

то как ты меряешь время - это ты меряешь что угодно, но не производительность алгоритмов
для нормальных измерений надо мерять такты, хотябы используя просто rdtsc (__rdtsc() в msvc и тоже какой-то интринсик в гцц)
при этом у процесса должен быть максимальный приоритет
PM MAIL ICQ   Вверх
djamshud
Дата 21.12.2009, 01:37 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

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



GoldFinch, я меряю при равных условиях - на бездействующей системе. Когда что-то идет нос к носу, проводится серия опытов. И заметь, показатели user и sys достойны доверия, т.к. показывают, сколько программа пробыла прямо в процессоре.

Да, это не лабораторные условия, ну так и я не лаборант. Использумый мной метод просто показывает, что программа А работает быстрее программы Б примерно в столько раз. Надеюсь, ты не станешь утверждать, что "реальные" тактовые измерения будут давать результат в точности до наоборот?

mes, "хуже не будет" по смыслу тоже подходит.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
GoldFinch
Дата 21.12.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Цитата(djamshud @  21.12.2009,  01:37 Найти цитируемый пост)
показывают, сколько программа пробыла прямо в процессоре

что то я сомневаюсь что ты представляешь как работает ОС и железо

Цитата(djamshud @  21.12.2009,  01:37 Найти цитируемый пост)
ну так и я не лаборант

может еще и не программист?

Цитата(djamshud @  21.12.2009,  01:37 Найти цитируемый пост)
Использумый мной метод просто показывает, что программа А работает быстрее программы Б 

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

PM MAIL ICQ   Вверх
djamshud
Дата 21.12.2009, 14:30 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

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



>что то я сомневаюсь что ты представляешь как работает ОС и железо

Что-то я сомневаюсь, что ты хотя бы думаешь, прежде чм писать. Ну что ж, давай, гуру, изложи тезисно семитомный труд "как работает ОС и железо", я посмеюсь.

>может еще и не программист?

Ты так говоришь "программист", как будто это что-то особенное. Самомнение на высоте! Неподкрепленное знаниями(с), ага?

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

Да, оно показывает, что  Виллариба собрала урожай и гуляет, а Виллабаджа все ждет профайлер, чтобы потом ВНЕЗАПНО начать быстрее работать.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Shaggie
Дата 21.12.2009, 14:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



У нас появился толстый тролль  smile 


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



****


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

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



я забыл, в этом разделе счетчик постов идет?
PM MAIL ICQ   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

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


 




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


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

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