![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
RazrFalcon |
![]()
Сообщение
#1
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Столько статей в инете по этому поводу нашел. И так и не понял в чем проблема.
Если я пробегусь по QStringList с помощью foreach и выполню нужные операции - это будет медленнее чем используя for? Или тут есть еще какие то подводные камни? Ну кроме: Цитата При входе в цикл foreach, Qt автоматически делает копию контейнера. Если вы измените контейнер во время выполнения цикла, то в цикле этого не будет заметно. (Если вы не изменяли контейнер, копирование все еще имеет место, но, благодаря неявному совместному использованию данных, копирование контейнера осуществляется очень быстро.)
Сообщение отредактировал RazrFalcon - 26.10.2011, 10:36 |
|
|
wiz29 |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
все зависит от того что тебе нужно получить, qt foreach это не аналог std::foreach алгоритма, а просто некий способ более элегантно записать цикл, никакой полезной оптимизации под собой данный метод (qt foreach) не имеет. обычный for использовать гораздо эффективнее, но более громоздко.
Если я пробегусь по QStringList с помощью foreach и выполню нужные операции - это будет медленнее чем используя for? Да, медленнее. |
|
|
RazrFalcon |
![]()
Сообщение
#3
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Хз. Я разницы не ощутил (при < 500 итемов).
Ну и foreach удобней, имхо. Меня интересует в каких случаях будут катастрофические тормоза? |
|
|
wiz29 |
![]()
Сообщение
#4
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
в случае если копирование объектов стоит дорого, в случае с QString это не так, если же говорить о произвольном объекте может быть ошутимая разница. ОПять - таки если тебе нужно модифицировать значения в контейнере то qt foreach точно не подойдет.
|
|
|
RazrFalcon |
![]()
Сообщение
#5
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Ясно.
А где можно почитать про такие "узкие" места, в который падает производительность? Желательно для Qt. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 20.6.2025, 4:54 |