crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
RazrFalcon
  опции профиля:
сообщение 26.10.2011, 10:36
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Столько статей в инете по этому поводу нашел. И так и не понял в чем проблема.
Если я пробегусь по QStringList с помощью foreach и выполню нужные операции - это будет медленнее чем используя for?

Или тут есть еще какие то подводные камни?
Ну кроме:
Цитата
При входе в цикл foreach, Qt автоматически делает копию контейнера. Если вы измените контейнер во время выполнения цикла, то в цикле этого не будет заметно. (Если вы не изменяли контейнер, копирование все еще имеет место, но, благодаря неявному совместному использованию данных, копирование контейнера осуществляется очень быстро.)


Сообщение отредактировал RazrFalcon - 26.10.2011, 10:36
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 26.10.2011, 11:24
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


все зависит от того что тебе нужно получить, qt foreach это не аналог std::foreach алгоритма, а просто некий способ более элегантно записать цикл, никакой полезной оптимизации под собой данный метод (qt foreach) не имеет. обычный for использовать гораздо эффективнее, но более громоздко.

Цитата(RazrFalcon @ 26.10.2011, 11:36) *
Если я пробегусь по QStringList с помощью foreach и выполню нужные операции - это будет медленнее чем используя for?

Да, медленнее.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 26.10.2011, 12:12
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Хз. Я разницы не ощутил (при < 500 итемов).
Ну и foreach удобней, имхо.

Меня интересует в каких случаях будут катастрофические тормоза?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 26.10.2011, 12:32
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


в случае если копирование объектов стоит дорого, в случае с QString это не так, если же говорить о произвольном объекте может быть ошутимая разница. ОПять - таки если тебе нужно модифицировать значения в контейнере то qt foreach точно не подойдет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 26.10.2011, 12:46
Сообщение #5


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Ясно.
А где можно почитать про такие "узкие" места, в который падает производительность? Желательно для Qt.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 20.6.2025, 4:54