crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Ресурсозатратность операции show()
RazrFalcon
  опции профиля:
сообщение 15.11.2011, 19:16
Сообщение #1


Zombie Mod
*****

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

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




Репутация:   212  


Есть собственный QScrollBar. Который начинает отображаться после определенного количества обработанных элементов.

Выглядит это приблизительно так:
if (count > 10)
    scrollBar->show();
То есть, начиная с 10-и, каждый раз будет вызываться show(). Насколько это затратно?
Также можно сделать что то в духе:
if (count > 10 && scrollBar->isHidden())
    scrollBar->show();
Но не знаю на сколько это лучше...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 15.11.2011, 19:31
Сообщение #2


Профессионал
*****

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

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




Репутация:   44  


Совершенно не затратно.
Вначале метода setVisible есть проверка, если виджет, который хотят показать уже виден, то сразу выйти из метода.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ernie
  опции профиля:
сообщение 16.11.2011, 7:01
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

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




Репутация:   1  


А если сделать просто if (count == 11) {
scrollBar->show();
}
? :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
sidsukana
  опции профиля:
сообщение 16.11.2011, 7:08
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 158
Регистрация: 23.12.2010
Из: Челябинск
Пользователь №: 2296

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




Репутация:   2  


Цитата(ernie @ 16.11.2011, 10:01) *
А если сделать просто if (count == 11) {
scrollBar->show();
}
? :)


Вы улавливаете суть того что автор написал?
Если надо > 10 значит там может быть и 12 и 13 и 123.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ernie
  опции профиля:
сообщение 16.11.2011, 7:25
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

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




Репутация:   1  


Цитата(sidsukana @ 16.11.2011, 13:08) *
Цитата(ernie @ 16.11.2011, 10:01) *
А если сделать просто if (count == 11) {
scrollBar->show();
}
? :)


Вы улавливаете суть того что автор написал?
Если надо > 10 значит там может быть и 12 и 13 и 123.

"Который начинает отображаться после определенного количества обработанных элементов"
Т.е. элементы где-то обрабатываются,потом судя по всему идёт эта проверка,так как автора волнует,что потом это много раз будет вызывать,я полагаю что проверка в цикле,вот оттуда и вывод такой:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 16.11.2011, 7:44
Сообщение #6


Zombie Mod
*****

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

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




Репутация:   212  


Да. Проверка в цикле.
Имелось ввиду то, что затратней: постоянная проверка или show().

А разницы между
if (count > 10)
и
if (count == 11)
в данном случае никакой.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ernie
  опции профиля:
сообщение 16.11.2011, 9:28
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

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




Репутация:   1  


Цитата(RazrFalcon @ 16.11.2011, 13:44) *
Да. Проверка в цикле.
Имелось ввиду то, что затратней: постоянная проверка или show().

А разницы между
if (count > 10)
и
if (count == 11)
в данном случае никакой.


Разница в том,что show() один раз вызовется только,при count==11 ,а не каждый раз :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 16.11.2011, 12:56
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

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




Репутация:   3  


Цитата
Имелось ввиду то, что затратней: постоянная проверка или show().

Постоянная проверка будет в любом случае. Вопрос был скорее лучше увеличить объем проверки (проверять две переменных вместо одной) или позволить каждый раз вызывать show().
Вариант ernie лучше тем что объем проверки остается тем же, но при этом show() будет вызываться только один раз.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.3.2024, 18:02