gentoo.ru
Официальная конференция Direct Connect клиента EisKaltDC
eiskaltdc@conference.gentoo.ru
Суббота, 13 февраля 2010< ^ >
NegatiV установил(а) тему: Upcoming release: 1.90-alpha || SVN: 64 || Конференция разработчиков EiskaltDC++ || логи: http://marsoft.dyndns.info/cgr-calendar.php?room=eiskaltdc || Лог изменений в последней ревизии на свн: http://code.google.com/p/eiskaltdc/source/list
TODO:
* GUI: settings for basic units
* запоминание местоположения виджетов
* Вывод меню хаба на вкладке.
* Раскраску ников
* *NEW* Иконки клиентов
Release schedule:
* 15.02 Tag EiskaltDC++ 1.90-alpha
* 17.02 Release EiskaltDC++ 1.90-alpha
* 24.02 Release EiskaltDC++ 1.95-beta1
* 03.02 Release EiskaltDC++ 1.98-beta2
* 10.03-15.03 Release EiskaltDC++ 2.0
Конфигурация комнаты
Участники комнаты

GMT+3
[00:04:25] Abram вошёл(а) в комнату
[00:11:35] 0xd34df00d вышел(а) из комнаты
[00:14:18] 0xd34df00d вошёл(а) в комнату
[02:19:26] Abram вышел(а) из комнаты
[03:33:34] Ским вышел(а) из комнаты
[03:34:00] Ским вошёл(а) в комнату
[03:41:41] Ским вышел(а) из комнаты
[03:41:51] Ским вошёл(а) в комнату
[03:44:42] Ским вышел(а) из комнаты
[03:44:52] Ским вошёл(а) в комнату
[09:24:14] gray_graff вошёл(а) в комнату
[11:11:31] dhampire вошёл(а) в комнату
[11:49:57] NegatiV вошёл(а) в комнату
[12:10:06] wilgib вошёл(а) в комнату
[12:16:05] <wilgib> NegatiV: r64 производительность не улучшилась: X 20-25%, eiskaltdcpp 50-60%, для машины ~1GHz и хаба ~12000 пользователей. Появились какие-нибудь идеи по улучшению производительности?
[12:21:32] <wilgib> NegatiV: и ещё, если в списке пользователей хочешь выбрать кого-нибудь для получения его шары, то очень трудно выделить пользователя т.к. список скачет с большой скоростью - раз пять за секунду.
[12:23:05] <NegatiV> wilgib: фиксы для повышения производительности выпускаю как только нахожу возможность их реализовать
[12:23:41] <NegatiV> wilgib: сделаю фильтр в EiskaltDC - набираешь ник и все неподходящие просто отсеиваются
[12:25:07] <0xd34df00d> Если вы делаете reset, это не поможет.
[12:25:16] <0xd34df00d> Выделение-то снимется.
[12:28:55] <wilgib> NegatiV: "сделаю фильтр" - фильтр нужен, но только он не предназначен для той проблемы, которую я описал: чрезмерно-частое обновление списка пользователей.В windows-клиентах, и в LinuxDC++ скорость обновления списка меньше.
[12:32:43] <wilgib> NegatiV:  можно ли добавить в настройки EiskaltDC++ такой пункт: "колличество обновлений списка пользователей за 5 секунд"? И по умолчанию сделать это значение равным единице т.е. обновление один раз в пять секунд.
[12:34:16] tehnick вошёл(а) в комнату
[12:34:52] <tehnick> wilgib: обновление списка сейчас асинхронное
[12:35:29] <tehnick> Список обновляется при получении сигналов от ядра, как я понимаю.
[12:35:34] <wilgib> tehnick: не понял, поясни.
[12:36:04] <tehnick> Я предлагал автору сделать обновление по таймеру, но мы друг друга не поняли.
[12:36:58] <wilgib> tehnick: "Список обновляется при получении сигналов от ядра" - так ведь сигналы от ядра можно и игнорировать.
[12:37:12] <tehnick> Эм...
[12:37:52] <tehnick> Я не в курсе, какую информацию передает ядро.
[12:38:02] <NegatiV> tehnick: нельзя сделать обновление списка отложенным
[12:38:23] <NegatiV> потому что нет события "добавть пользователя"
[12:38:39] <tehnick> wilgib: Но если оно передают инфу о новых/ушедших пользователях, то нельзя игнорировать...
[12:38:41] <NegatiV> есть только "обновить пользователя" и "удалить пользователя"
[12:39:00] <wilgib> NegatiV: а как же это сделано в LinuxDC++?
[12:39:10] <NegatiV> wilgib: точно также
[12:39:37] <wilgib> NegatiV: но в нём список не скачет так часто.
[12:39:59] <NegatiV> у меня все аналогично
[12:40:14] <NegatiV> + артефакты иногда появляются
[12:40:38] <NegatiV> т.е. я выделяю пользователя, и тут же кто-то заходит/уходит
[12:40:48] <wilgib> NegatiV: а в виндовом DC++, там тоже не скачет?
[12:41:01] <NegatiV> wilgib: тулкиты разные
[12:41:04] <tehnick> NegatiV: я тебе писал про решение этой проблемы... Ты ведь все равно хранишь информацию о пользователях во внутренней перенной? Переменная пусть обновляется постоянно, а список по таймеру. Не вариант?
[12:41:22] <tehnick> (12:36:14)  wilgib:  NegatiV: но в нём список не скачет так часто.
Скачет так же.
[12:42:14] <NegatiV> tehnick: я не обновляю список в ручную, это происходит только по-требованию от окружения
[12:42:29] <0xd34df00d> Предлагаю такую схему.
[12:42:51] <0xd34df00d> По сигналам от ядра накапливается некий QList/QSet с diff'ом событий. То есть, они все в него добавляются.
[12:42:58] <tehnick> (12:37:15)  NegatiV:  т.е. я выделяю пользователя, и тут же кто-то заходит/уходит
У меня тоже. Еще в linuxdcpp забавный глюк с дублированием пользователей: одинаковые строки в списке юзеров появляются ненадолго...
[12:43:07] <0xd34df00d> Раз в 1-2-5-10 секунд по таймеру ядро дергает этот diff и изменяет свою модель соответствующим образом.
[12:43:22] <wilgib> NegatiV: "тулкиты разные" - но ядро то одно и вроде именно ядро за это отвечает
[12:43:43] <tehnick> 0xd34df00d: вот я это и имел в виду. Может плохо объяснил...
[12:43:58] <NegatiV> wilgib: ядро свою работу сделало - прислало сообщение, остальное забота GUI
[12:44:12] <0xd34df00d> Мне с либторрентом в этом плане легче — я раз в пару секунд дергаю get_peers и сравниваю возвращенный список со своим.
[12:45:24] Kroll вышел(а) из комнаты
[12:46:20] <NegatiV> 0xd34df00d: не думаю что QList тут подойдет, лучше уж хеш юзер-данные
[12:46:58] <NegatiV> и diff не нужен - информация в хеше всегда самая полная
[12:47:29] <tehnick> NegatiV: кстати, таймер на 3 секунды при обновлении статистики это многовато оказалось, можешь изменишь на 1 секунду?
[12:47:59] <wilgib> NegatiV: если от ядра приходят сообщения о пришедших/ушедших юзерах то можно отображать это в списке не так часто как приходят сообщения от ядра, а так как будет выставлено в настройках. Можно-ли это реализовать?
[12:49:00] <NegatiV> wilgib: т.е. ты предлагаешь некторое время сделать информацию в списке юзеров неактуальной?
[12:49:20] dhampire вышел(а) из комнаты
[12:49:33] Kroll вошёл(а) в комнату
[12:49:34] <wilgib> NegatiV: да, причём это время должно быть настраиваемым.
[12:49:46] <0xd34df00d> NegatiV: щито.
[12:49:52] <0xd34df00d> NegatiV: в какой форме приходят данные от ядра?
[12:50:07] <0xd34df00d> NegatiV: я тут согласен с wilgib'ом, короче.
[12:50:36] <tehnick> +1 =)
[12:50:53] <NegatiV> 0xd34df00d: приходит сообщение с данными о пользователе (т.е. нет понятие обновилось такое-то поле)
[12:51:13] <NegatiV> приходится опять выдирать _все_ данные из события
[12:51:41] <tehnick> И применять их сразу.
[12:51:42] <NegatiV> и переписывать данные элемента
[12:51:47] <wilgib> NegatiV: "т.е. ты предлагаешь некторое время сделать информацию в списке юзеров неактуальной?" - а при какой скорости информация считается актуальной?
[12:51:54] <tehnick> Но можно ведь просто накапливать.
[12:53:00] <NegatiV> tehnick: в том то и дело, я без понятия что поменялось, а что нет. Поэтому я и говорю что если и делать накапливание, то очередь diff'ов не нужна - полученные данные актуальны
[12:53:46] <NegatiV> wilgib: неактуальной информация может быть только промежуток меньший реакции пользователя
[12:54:33] <0xd34df00d> Блин, смотри.
[12:54:37] <0xd34df00d> Приходят от ядра сообщения.
[12:54:42] <NegatiV> угу
[12:54:42] <0xd34df00d> ТЫ их складируешь в некий контейнер.
[12:54:44] <tehnick> NegatiV:
Т.е. до перезаписи данных элемента нельзя вычисли что произошло?
[12:55:00] <0xd34df00d> Потом раз в N секунд выгребаешь все из этого контейнера и соответствующим образом обновляешь свою модель.
[12:55:08] <0xd34df00d> Какие-то ряды удалятся, какие-то добавятся, какие-то обновятся.
[12:55:09] <0xd34df00d> Выот.
[12:55:54] <tehnick> Это если сообщения от ядра содержат в себе всю информацию...
[12:56:10] <NegatiV> 0xd34df00d: сообщение нельзя положить в контейнер, во-первых потому что у него приватные конструктор и деструктор, а во-вторых оно уничтожается после выхода из обработчика
[12:56:49] <tehnick> Че-че?
[12:56:51] <NegatiV> поэтому я говорю нужно выдрать всю информацию из него и сохранить в хеше
[12:57:11] <tehnick> Что это за сообщение такое вообще?
[12:57:12] <NegatiV> по таймеру обойти хеш и обновить список
[12:57:24] <tehnick> Ну да. Это возможно?
[12:57:45] <NegatiV> tehnick: сообщение от ядра об обновившемся пользователе
[12:58:10] <NegatiV> tehnick: попробую сегодня прикрутить - посмотрим что из этого выйдет
[12:58:19] <0xd34df00d> Говно какое-то, а не сообщения.
[12:58:25] <NegatiV> ))
[12:58:27] <0xd34df00d> Хотя, возможно, в целях производительности...
[12:58:58] <NegatiV> 0xd34df00d: все правильно - нужна информация получай сейчас, потом - хер
[12:59:11] <0xd34df00d> NegatiV: не правильно при таком асинхронном дизайне
[12:59:44] <wilgib> NegatiV: ты же вроде как говорил в воскресенье, что хочешь довести клиент до завершенного вида, а после 12 числа вплотную заняться увеличением производительности.
[13:00:08] <NegatiV> 0xd34df00d: я так понял это сдлано чтобы освободить программиста от необходимости управлять еще и очередью сообщений
[13:00:08] <0xd34df00d> Завершенный вид — это бетка? )
[13:00:35] <0xd34df00d> NegatiV: под освобождением от управления подразумевается написание собственного велосипеда? Интересные представления у авторов либы.
[13:01:19] <NegatiV> wilgib: в принципе так сейчас и есть, вот подкинули идею об отложенном обновлении списка
[13:01:51] <NegatiV> 0xd34df00d: )) ну такие приключения у меня только со списком юзеров
[13:02:05] <NegatiV> ибо сообщений действительно очень много
[13:02:33] <NegatiV> при запуске хаба на 7к пользователей их около 8.5к
[13:02:53] <NegatiV> причем приходит за первые секунды 2-3
[13:03:09] <NegatiV> потом меньше (около 50-100 в секунду)
[13:06:11] <NegatiV> 0xd34df00d: еще по поводу сообщений, еще одна из причин запрета управлять ими - 1 сообщение может быть доставлено разным слушающим. И если каждый из них сможет изменять его... Ну ты понял =)
[13:06:44] <wilgib> NegatiV: Так неужели разницу между виндовым DC++ у которого загрузка всегда меньше 10% на хабе с 12000 пользователей и EiskaltDC++ у которого 80-100%(в совокупости с X), составляет только реализация очереди, что-то неверится.
[13:07:36] <tehnick> wilgib: ядро там точно так же реализовано.
[13:08:06] <NegatiV> wilgib: ну судя по профилеру вся нагрузка сосредоточена в модели списка юзеров
[13:08:10] <0xd34df00d> NegatiV: доставлять по значению.
[13:08:24] <0xd34df00d> wilgib: это может жрать 100% ядра, я гарантирую это.
[13:08:45] <tehnick> И жрало.
[13:08:58] <tehnick> Пока NegatiV не исправил недавно...
[13:10:06] <NegatiV> wilgib: предлагаю подожать отложенного обновления списка юзеров - должно помочь
[13:10:33] <NegatiV> думаю ничего криминального не произойдет если опустошать очередь раз в секунду
[13:10:51] <tehnick> Конечно.
[13:10:55] <NegatiV> очередь\хеш
[13:11:06] <tehnick> Обычно у пользователя реакция медленнее...
[13:11:15] <wilgib> NegatiV: ты сегодня успеешь переделать?
[13:11:25] <NegatiV> wilgib: да, вполне
[13:12:29] <wilgib> NegatiV: "думаю ничего криминального не произойдет если опустошать очередь раз в секунду" - всё-таки желательно в будущем сделать это время настраиваемым.
[13:12:53] <WiseLord> NegatiV: скрытые файлы в контексте eiskaltdcpp
[13:12:59] <wilgib> NegatiV: во-сколько примерно?
[13:13:00] <WiseLord> это файлы начинающиеся с точки?
[13:13:15] <WiseLord> или в windows это уже её скрытые файлы?
[13:13:34] <NegatiV> wilgib: схожу в магазин, приготовлю себе обед - часа через 2
[13:14:16] <NegatiV> WiseLord: думаю в ядре идет разделение между скрытыми файлами в Linux и в Windows
[13:15:24] <NegatiV> wilgib: +мин 20-30 на то чтобы все написать
[13:17:02] <wilgib> NegatiV: "+мин 20-30 на то чтобы все написать" - впечатляющая скорость.
[13:21:17] <WiseLord> NegatiV: а прикольно на googlecode сделан просмотр svn.. ajax
[13:22:41] <NegatiV> wilgib: там ничего сложного
[13:23:04] <NegatiV> WiseLord: угу, мне тоже нравится. очень удобно по сравнению с sf
[13:24:12] <WiseLord> и быстрее намного
[13:27:14] <WiseLord> NegatiV: а когда заморозка функционала?
[13:27:28] <NegatiV> WiseLord: уже
[13:27:37] <WiseLord> просто сейчас, при попытках "улучшения" перевода..
[13:27:48] <WiseLord> .. столкнулся с несколькими мелочами в интерфейсе и т.п.
[13:28:06] <NegatiV> WiseLord: ну исправлять можно
[13:28:12] <NegatiV> нельзя ничего добавлять
[13:28:13] <WiseLord> например, при хэшировании окно прогресса прыгает в размерах
[13:28:41] <WiseLord> ну и в разных диалогах не очень удачные расположения элементов/их границы и т.п.
[13:30:50] wilgib вышел(а) из комнаты
[13:43:40] <NegatiV> tehnick: написал.
[13:43:46] <NegatiV> эффект 0%
[13:44:30] <tehnick> Так уж и ноль?
[13:44:42] <NegatiV> нагрузка такая же абсолютно
[13:44:47] <NegatiV> могу закоммитить
[13:44:51] <NegatiV> проверишь
[13:45:02] <tehnick> Хорошо.
[13:45:48] <NegatiV> tehnick: r66
[13:46:27] <NegatiV> tehnick: проверь плиз сейчас
[13:46:29] <tehnick> Ок. Уже обновляется.
[13:48:30] wilgib вошёл(а) в комнату
[13:48:49] <tehnick> wilgib: у тебя какой дистриб?
[13:49:11] <wilgib> tehnick: Arch Linux i686
[13:49:51] <NegatiV> tehnick: ну как?
[13:50:40] <tehnick> Ну, я же не у себя обновляю.
[13:50:55] <tehnick> Жду, пока ланчпад соберет пакеты.
[13:51:31] <NegatiV> wilgib: r66
[13:56:02] <wilgib> NegatiV: CMakeLists.txt обновился, а это значит что пересобираться будет всё кроме содержимого каталога dcpp. А на моей машине это довольно долго.
[14:11:17] <wilgib> NegatiV: не улучшилась.
[14:11:55] <tehnick> А у меня сейчас шара перехэруется и я тоже проверю.
[14:12:11] <tehnick> *перехэшируется
[14:15:08] <NegatiV> tehnick: вот количество обновлений приходящее каждую секунду:
[14:15:09] <NegatiV> 0                                                                                          
1                                                                                          
2596                                                                                        
3848                                                                                        
2505                                                                                        
1533                                                                                        
4                                                                                          
4                                                                                          
6                                                                                          
5                                                                                          
5                                                                                          
4                                                                                          
4
[14:15:44] <NegatiV> первые 5 секунд - подключение к хабу
[14:16:15] <tehnick> Проверил. Теперь рывками проц грузит.
[14:16:44] <NegatiV> с интервалом в 1-2 сек?))
[14:16:46] <tehnick> Если поставить количетво измерений несколько раз в секунду, то на мониторе видно.
[14:16:50] <tehnick> Ага.
[14:17:19] <NegatiV> ну это таймер обходящий очередь
[14:17:43] <tehnick> Все равно лучше стало.
[14:17:46] <NegatiV> какова величина скачков?
[14:19:48] <tehnick> Меньше 20-25%
[14:20:05] <tehnick> Только частота процессора стала дергаться чаще.
[14:20:11] <tehnick> Это не гуд. =(
[14:21:20] <tehnick> Хотя когда окно свернуто или в трее, процесс грузит меньше...
[14:21:39] <wilgib> NegatiV: ведь код клиента DC++ открыт, может посмотришь какая там концепция - она ведь от тулкита независит.
[14:22:19] <tehnick> Ну-ну.
[14:23:04] <tehnick> Код может и открыт, но завязан на winapi, к примеру.
[14:23:10] <tehnick> И много от него будет пользы?
[14:24:20] <NegatiV> tehnick: по-моему, профит 0%. что-сообщения обрабатываются сразу, что порциями по таймеру
[14:24:28] <tehnick> Угу.
[14:24:35] <tehnick> Профит незначительный.
[14:24:44] <tehnick> Пока нет настроек таймера.
[14:24:48] <wilgib> tehnick: я говорю про модель очереди, её реализация зависит от winapi, а не её концепция.
[14:24:58] <tehnick> Список юзеров все так же дергается.
[14:25:59] <tehnick> wilgib: модель очереди скорее всего точно такая же как в linuxdcpp: асинхронная.
[14:26:56] <tehnick> NegatiV: оставишь или откатишь изменения?
[14:27:32] <tehnick> Ошибка сегментирования при выходе кстати никуда не делась.
[14:27:36] <NegatiV> wilgib: если я сделаю как в виндовом клиенте (item-based модель, а не MVC ) то нагрузка опять возрастет
[14:27:57] <NegatiV> *item-based список
[14:28:12] <NegatiV> tehnick: сделаю откат
[14:28:25] <tehnick> Ок.
[14:28:31] <NegatiV> тем более судя по профилеру нагрузка в модели основная
[14:28:32] <wilgib> NegatiV: факт: производительность DC++ значительно лучше. Чем это объяснить.
[14:28:52] <tehnick> NegatiV: Только таймер для обновления статистики оставь 1 секунду.
[14:28:52] <NegatiV> *основная нагрузка в модели
[14:29:44] <tehnick> (14:25:09)  wilgib:  NegatiV: факт: производительность DC++ значительно лучше. Чем это объяснить.
Особенностью реализации графической подсистемы винды?..
[14:30:02] <NegatiV> wilgib: сек. сейчас тебе скриншот пришлю
[14:30:11] <NegatiV> там увидишь где нагрузка
[14:30:31] <tehnick> wilgib:  ты под вайном DC++ запускал?
[14:31:18] <NegatiV> tehnick: там сам принцип отрисовки списка юзеров другой
[14:31:20] <wilgib> tehnick: а в LinuxDC++ у меня 10-30% это гораздо лучше чем в EiskaltDC++, но хуже чем в виндовом DC++.
[14:31:21] <NegatiV> намного проще
[14:31:29] <NegatiV> но непортируемый
[14:32:09] <tehnick> wilgib: так запускал или нет? Это тоже интересно сравнить...
[14:32:37] <wilgib> tehnick: ты про что?
[14:32:41] <tehnick> NegatiV: и как это противоречит моим словам?
[14:32:48] <tehnick> (14:27:07)  tehnick:  wilgib: ты под вайном DC++ запускал?
[14:32:49] <NegatiV> никак
[14:33:05] <wilgib> tehnick: да, запускал
[14:33:51] <wilgib> tehnick: но о нагрузке я говорил про DC++ запущенный под Windows XP
[14:33:51] <tehnick> (14:29:26)  NegatiV:  никак
Я просто в курсе, что огнелис и опера в винде работают быстрее, только потому что используют winapi...
[14:34:25] <tehnick> (14:30:27)  wilgib:  tehnick: но о нагрузке я говорил про DC++ запущенный под Windows XP
Вот. А какие результаты под вайном?
[14:34:25] <NegatiV> tehnick: сейчас скриншот выложу профилера
[14:34:43] <NegatiV> там все видно прекрасно где нагрзка самая высока
[14:35:05] <wilgib> tehnick: сейчас посмотрю как под wine.
[14:36:11] <tehnick> wilgib: мне просто долго было бы его ставить и хешировать шару, чтобы проверить на большом хабе вроде Озерков...
[14:38:05] <wilgib> tehnick: так расшарить можно один раз, а потом сохранить каталог .dc++ куда нибудь, и когда будет нужно скопировать его обратно.
[14:41:15] <NegatiV> wilgib: только сейчас вспомнил, ты не тестировал у себя работу с 64-битными числами?
[14:41:25] <NegatiV> всякие числодробилки не запускал
[14:41:43] <NegatiV> в EiskaltDC++ почти все числа 64-битные
[14:43:31] <wilgib> tehnick: NegatiV: посмотрел под wine клиент DC++: DC++ 10-20%, X 4-12%.
[14:44:53] <wilgib> при этом список пользователей обновляется примерно раз в секунду
[14:47:06] <wilgib> NegatiV: так где обещанный скриншот?
[14:47:21] <NegatiV> wilgib: профилер еще работает
[14:47:42] <NegatiV> вернее список юзеров догружает
[14:47:53] <tehnick> (14:34:41)  wilgib:  tehnick: так расшарить можно один раз, а потом сохранить каталог .dc++ куда нибудь, и когда будет нужно скопировать его обратно.
Т.е. файлы с настройками или список фалов можно из linuчdcpp подсунуть?
[14:48:06] <NegatiV> tehnick: ты прав
[14:48:10] <NegatiV> )
[14:48:18] <tehnick> (14:40:07)  wilgib:  tehnick: NegatiV: посмотрел под wine клиент DC++: DC++ 10-20%, X 4-12%.
Т.е. примерно как в linuxdcpp у тебя же?
[14:49:24] <wilgib> NegatiV: так, а что ты думаешь насчёт того DC++ в wine 10-20%.
[14:50:25] <wilgib> tehnick:  "Т.е. файлы с настройками или список фалов можно из linuчdcpp подсунуть?" - да.
[14:50:43] <NegatiV> wilgib: tehnick: http://img683.imageshack.us/img683/5038/70525502.png
[14:50:53] <NegatiV> сейчас поясню что вы там увидите
[14:50:58] <wilgib> tehnick: как ты цитируешь мои сообщения?
[14:51:43] <tehnick> wilgib: копипаст средней кнопкой мыши.
[14:52:07] <NegatiV> левый верхний угол: self указывает в процентном соотношении то в каком модуле сосредоточена нагрзка
[14:52:10] <NegatiV> *нагрузка
[14:52:41] <NegatiV> как видим в eiskaltdcpp всего 21.63% всей нагрузки
[14:53:08] <NegatiV> 19+13 = 32% - нагрузка в libQt
[14:53:23] <NegatiV> 33% нагрузка в libc
[14:53:54] <tehnick> В libQtGui отрисовка виджетов столько жрет?
[14:54:03] <NegatiV> нижний крайний слева - соредоточение нагрузки уже в самом eiskaltdcpp
[14:54:10] <NegatiV> tehnick: да
[14:54:56] <NegatiV> как видим в описанном выше фрейме нагрузка на список юзеров всего 17% от всего времени
[14:55:13] <tehnick> Угу, ядро больше жрет.
[14:55:24] <NegatiV> т.е. 17% от 21% которое тратит eiskaltdcpp
[14:55:41] <wilgib> tehnick: "Т.е. примерно как в linuxdcpp у тебя же?" - да.
[14:55:48] <NegatiV> в центральном фрейме указана строка больше всего "жрущая"
[14:56:41] <NegatiV> 21.74% - и <барабанная дробь> - это вызов в libQt
[14:56:55] <tehnick> NegatiV: а freedcpp ты так можешь потестить? Или не хочешь время терять?
[14:57:21] <NegatiV> так что вся нагрузка уходит в libQt
[14:57:37] <NegatiV> tehnick: да,сейчас так и сделаю
[14:58:43] <tehnick> NegatiV:  а справа там что? Перевод убивает...
[14:59:20] <NegatiV> там количесво вызовов той или иной функции + интегральная оценка
[14:59:39] <NegatiV> интегральная оценка нас не интересует
[15:01:28] <NegatiV> tehnick: так что как видишь, Qt не такой легкий тулкит как ты говорил)
[15:03:35] <wilgib> NegatiV: (14:38:41)  NegatiV:  
wilgib: только сейчас вспомнил, ты не тестировал у себя работу с 64-битными числами? а как это можно тестировать?
[15:04:31] <NegatiV> wilgib: ну к примеру написать программку на c++ которая будет складывать/умножать делить 64-битные числа
[15:04:37] <WiseLord> хм.. вот вы тут всё про нагрузку на CPU говорите
[15:04:46] <WiseLord> а подскажите какой-нибудь хаб, где много пользователей, проверю у себя
[15:05:05] <NegatiV> WiseLord: dc.ozerki.net
[15:05:45] <wilgib> NegatiV: я не знаю C++? и что значит 64-битные числа.
[15:05:51] <tehnick> (14:58:05)  NegatiV:  tehnick: так что как видишь, Qt не такой легкий тулкит как ты говорил)
Вижу. Но я так же вижу и libc 33%... =)
[15:06:04] <WiseLord> блин, что-то меня оттуда сразу же дисконнектит
[15:06:36] <wilgib> NegatiV: знак вопроса не там поставил.
[15:06:52] <tehnick> WiseLord: только на dc.ozerki.net есть минимальное ограничение по шаре при подключении.
[15:06:57] <NegatiV> tehnick: libc - это создание/удаление объектов
[15:06:58] <WiseLord> сколько?
[15:07:19] <NegatiV> WiseLord: 11 Гб
[15:07:43] <NegatiV> для входа на основной хост - 20Гб
[15:08:01] <tehnick>         :::::>    Пользователей онлайн (Current user count): 10848
        :::::>    Файлов доступно (Current shared files): 2,055 PB
        :::::>    Текущий лимит на вход для интернет-юзеров: 27 GB
[15:08:20] <WiseLord> ладно, ща расшарю BBC: Планета земля в HD
[15:09:31] <WiseLord> NegatiV: а кнопка обновления шары только в диалоге настроек рабочая?
[15:09:34] <WiseLord> на тулбаре пока нет?
[15:09:47] <NegatiV> там должна работать
[15:09:52] <WiseLord> и если я скрыл прогрессбар, вернуть назад можно?
[15:10:38] <NegatiV> WiseLord: пока нет
[15:10:47] <NegatiV> кстати, кнопка там не рабочая)
[15:10:56] <WiseLord> вот и я про то )
[15:11:06] <wilgib> WiseLord: высокая нагрузка на процессор - это только для слабых машин(у меня ~1GHz), если у тебя мощный процессор, то эта проблема не проявится даже на крупном хабе.
[15:11:17] <WiseLord> ясно
[15:11:21] <WiseLord> у меня Q9400
[15:11:33] <WiseLord> наверное, не проявится
[15:12:03] <wilgib> WiseLord: совершенно точно непроявится.
[15:15:54] <NegatiV> WiseLord: насчет кнопки для окна хеширования - нужна иконка
[15:16:19] <wilgib> NegatiV: (14:46:50)  wilgib:  
NegatiV: так, а что ты думаешь насчёт того что DC++ в wine 10-20%.
[15:16:28] <NegatiV> WiseLord: я сейчас починю обновление и закомичу, ты подбери иконку в тему
[15:16:52] <NegatiV> wilgib: сейчас профилер закончит работу с freedcpp
[15:16:58] <NegatiV> и я скажу что думаю
[15:19:34] <NegatiV> wilgib: tehnick: http://img203.imageshack.us/img203/7614/48904471.png
[15:20:12] <NegatiV> как видите у FreeDC++ нет таких потерь в тулките
[15:20:36] <NegatiV> libglib - 11.49%
[15:20:49] <NegatiV> все остальное в dcpp
[15:21:40] <tehnick> Обидно.
[15:22:02] <tehnick> У тебя Qt 4.6.1?
[15:22:21] <NegatiV> tehnick: угу
[15:22:50] <NegatiV> у нас нагрузка от тулкита только в 3 раза больше
[15:23:16] <NegatiV> и чуть сильнее в libc (не критично)
[15:23:47] <wilgib> NegatiV: т.е. единственный вариант уменьшения нагрузки это переписывание этой части кода без Qt?
[15:23:54] <NegatiV> wilgib: да
[15:24:18] <NegatiV> либо уменьшить количество обращени туда
[15:24:20] <tehnick> А почему так мало вызовов обновления списка во freedcpp?
[15:24:22] <NegatiV> *обращений
[15:24:58] <wilgib> NegatiV: и ты собираешся переписывать эту часть кода?
[15:25:22] <NegatiV> tehnick: как я понял обновление происходит в libglib
[15:26:04] <NegatiV> wilgib: попробую убрать MVC и сделать как в linuxdcpp
[15:26:22] <NegatiV> код будет более корявый но надеюсь более "легкий"
[15:26:34] <tehnick> Откуда убрать?
[15:26:55] <NegatiV> tehnik: из списка юзеров
[15:27:19] <NegatiV> т.е. без промежуточной модели управлять элементами
[15:27:38] <tehnick> Главное, чтобы можно было откатиться, если результат снова достигнут не будет.
[15:27:55] <wilgib> NegatiV: самый эффективный код будет если написать его на ассемблере.
[15:28:28] <NegatiV> tehnick: я вот тоже думаю как все сделать аккуратнее - изменения серьезные все-таки
[15:29:05] <NegatiV> wilgib: ну linuxdcpp и gtk - С чистой воды
[15:29:18] <tehnick> В свн можно как в гите сделать отдельную ветку и мучить ее?
[15:29:26] <WiseLord> NegatiV: а я вот не понял, отменить загрузку типа нельзя?
[15:29:35] <tehnick> И если успешно, то соединить...
[15:29:54] <NegatiV> tehnick: наверное так и сделаю
[15:29:58] <NegatiV> отдельную ветвь
[15:30:08] <NegatiV> WiseLord: можно
[15:30:15] <WiseLord> хм
[15:30:18] <WiseLord> я уже из очереди удалил
[15:30:19] <NegatiV> Download Queue
[15:30:26] <WiseLord> но всё равно качает
[15:30:26] <NegatiV> там remove
[15:31:01] <WiseLord> http://imgby.com/xsnaphch.png
[15:31:36] <NegatiV> WiseLord: сейчас попробую
[15:34:21] <wilgib> WiseLord: видимо он докачивает часть которую начал качать ешё до отмены закачки, поэтому и не знает что она отменена.
[15:34:56] <NegatiV> WiseLord: до - http://img534.imageshack.us/img534/3337/99788942.png после - http://img713.imageshack.us/img713/3061/20284318xuyqqsq.png
[15:35:37] <NegatiV> WiseLord: очередь чиста
[15:41:46] <wilgib> NegatiV: если с меня качают один и тот же файл несколько человек, то они отображаются по отдельности, а не группируются как при скачке - так и задумано?
[15:43:20] <NegatiV> wilgib: ну да - соединения разные
[15:43:56] <wilgib> NegatiV: так при скачке тоже соединения разные.
[15:44:34] <NegatiV> wilgib: вот только обслуживают они точно известную цель в очереди закачек
[15:45:09] <NegatiV> а цель группировки отдач мне не ясна
[15:45:17] <NegatiV> нет точной позции, прогресса
[15:46:13] Abram вошёл(а) в комнату
[15:46:14] <wilgib> NegatiV: цель - компактное отображение отдач(когда много качающих).
[15:47:32] <NegatiV> wilgib: группировка это не косметическое дополнение, она показывает от какого юзера какой сегмент пишется в файл
[15:48:14] <NegatiV> т.е. они не являются самостоятельными элементами вообще
[15:48:39] <NegatiV> а вот отдача вполне себе самомтоятельна, ибо гарантирует что в ней будет только один сегмент
[15:48:51] <NegatiV> *самостоятельна
[15:49:04] <wilgib> NegatiV: "нет точной позции, прогресса" - да, этого нет, но ведь можно для общей строки обойтись и без этого, а показывать позицию для каждого качающего при развороте списка.
[15:50:14] <NegatiV> wilgib: в таком случае для потдач нужно сразу создавать родительский элемент
[15:50:39] <wilgib> NegatiV: "группировка это не косметическое дополнение" - а я говорю как-раз с точки зрения эстетичного внешнего вида.
[15:50:55] <NegatiV> и если будут качать разные файлы то ты получишь вдвое большее количество элементов
[15:51:01] <NegatiV> (родитель-потомок)
[15:51:34] <NegatiV> что будет так же некрасиво как и и отсутсвие группировки
[15:53:05] <wilgib> NegatiV: "в таком случае для потдач нужно сразу создавать родительский элемент" - но ведь по умолчаню они будут свёрнуты. Количество элементов серьёзно отъедает процессор?
[15:54:15] <NegatiV> в принципе никак не отъедает
[15:54:18] <NegatiV> только память
[15:55:18] WiseLord вышел(а) из комнаты
[15:56:48] <wilgib> NegatiV: "что будет так же некрасиво как и и отсутсвие группировки" - не согласен - по умолчанию они будут свёрнуты - т.е. это будет внешне выглядеть также как и без группировки(а прогресс можно показывать средний для всех источников).
[15:58:31] <wilgib> NegatiV: и ещё, почему-то отдача занимает 90-95%, а скачка 40%.
[15:58:50] <NegatiV> ?
[15:58:54] <NegatiV> это как
[15:59:06] <NegatiV> там и то и то рисуется аково
[15:59:18] <NegatiV> разница только в цвете стрелочки
[15:59:40] <wilgib> NegatiV: CPU конечно - это если по отдельности сравнивать: сначала только отдача, потом только скачка.
[16:00:57] <wilgib> NegatiV: (15:56:45)  NegatiV:  
разница только в цвете стрелочки  Может ядро так работает.
[16:01:35] <NegatiV> хз, как оно там работает) но нагрузка точно не от GUI
[16:01:57] <wilgib> NegatiV: ясно
[16:05:32] tehnick вышел(а) из комнаты
[16:07:40] <wilgib> NegatiV: есть ли в планах добавить свойство всем полям -  запоминать свои размеры?
[16:08:00] <NegatiV> wilgib: да конечно
[16:09:06] <wilgib> NegatiV: это я не про панели а про поля или ты тоже про это.
[16:10:23] <NegatiV> wilgib: ты имеешь в виду списки и ширину колонок в них?
[16:10:33] <wilgib> NegatiV: да
[16:11:30] <NegatiV> ну ширина запоминается ля списка юзеров, поисковика, очереди закачек, менеджера передач и браузера шары
[16:11:39] <NegatiV> так же как и отображаемые колонки
[16:12:43] <wilgib> NegatiV: у меня при следующем запуске опять всё по-умолчанию.
[16:13:06] <NegatiV> гм, креша нет на выходе?
[16:13:29] <wilgib> NegatiV: нет
[16:13:52] tehnick вошёл(а) в комнату
[16:14:13] <NegatiV> хм, у меня все прекрасно сохраняется
[16:15:02] <tehnick> "Начато портирование библиотеки Qt на платформу Android"
[16:15:04] <tehnick> Может быть мобильная версия Qt более оптимизирована?
[16:15:47] <NegatiV> tehnick: вот это хз)
[16:16:36] <wilgib> tehnick: а как у тебя, ширина полей сохраняется?
[16:16:48] <tehnick> (16:13:06)  NegatiV: гм, креша нет на выходе?
А у тебя разве нет ошибки сегментации при выходе?
[16:16:59] <tehnick> Нет, не сохраняется.
[16:17:00] <NegatiV> tehnick: нет
[16:17:21] <tehnick> И положение тулбаров тоже не соханяется.
[16:17:48] <NegatiV> может у тебя еще что-то кроме хаба открыто?
[16:18:08] <NegatiV> tehnick: про тулбар я знаю, надо что-то придумать
[16:18:11] <wilgib> NegatiV: а у тебя точно сохраняется?(может значения по умолчанию на твоём мониторе нормально выглядят)
[16:18:36] <tehnick> (16:14:25)  NegatiV:  может у тебя еще что-то кроме хаба открыто?
Четыре вкладки с хабами...
[16:18:53] <tehnick> Из какой из них кстати сохранияется?
[16:19:09] <NegatiV> wilgib: точно, сейчас специально включил одну колонку в списе юзеров, закрыл клиент, открыл - новая ширина и колонки сохранились
[16:19:27] <NegatiV> tehnick: последний закрытый
[16:19:52] <NegatiV> tehnick: запусти клиент под отладчиком
[16:20:01] <NegatiV> упадет выполни там bt
[16:20:06] <NegatiV> и вывод сюда
[16:23:43] <tehnick> Сейчас проверил, ширина столбцов и их видимость в списке юзеров, в загрузках и даже в табе с поиском сохраняются. Так что я ошибся.
[16:24:41] <tehnick> (16:16:28)  NegatiV:  tehnick: запусти клиент под отладчиком
У меня не дебагерская версия собрана... Или это не важно?
[16:24:57] <NegatiV> важно)
[16:25:09] <tehnick> Но Ошибка сегментирования в eiskaltdcpp стабильна.
[16:25:38] <tehnick> NegatiV: пересобирать, да еще и локально лень.
[16:26:02] <tehnick> $ qmake -v
QMake version 2.01a
Using Qt version 4.6.0 in /usr/lib
[16:26:08] <tehnick> Хм...
[16:26:13] <tehnick> А это важно?
[16:27:03] <NegatiV> просто мне без вывода отлдчика не определить где именно креш
[16:27:51] <tehnick> У меня Debian Sid, но новее 4.6.0 пока даже в экспериментальной ветке нет...
[16:28:26] <tehnick> (16:23:39)  NegatiV:  просто мне без вывода отлдчика не определить где именно креш
Если у других этой ошибки нет, значит это моя локальная проблема....
[16:28:35] <tehnick> Так что забудь.
[16:29:01] <NegatiV> ну если это где-нибудь еще всплывет то пофиксим
[16:29:13] <NegatiV> пока я даже не знаю куда рыть
[16:32:57] <wilgib> NegatiV: ширина полей в списке пользователей, файл-листе, поиске действительно сохраняется, а вот в finished uploads/downloads - нет, когда будешь испралять учти, что в этих случаях переключатель show имеет два значения users и files - для обоих нужно ширину запоминать отдельно.
[16:34:15] <NegatiV> wilgib: ок
[16:37:38] <wilgib> NegatiV: Так ты решил переписывать часть кода, отвечающую за список пользователей, без Qt? Через сколько времени надо будет тестить?
[16:38:36] <NegatiV> wilgib: точно не скажу придется много переписать. я сделаю объявление на форуме как только можно будет начать тестить
[16:38:44] <NegatiV> думаю день-два все займет
[16:38:55] <wilgib> NegatiV: ясно
[16:39:41] <wilgib> NegatiV: кстати, а это не скажется на кроссплатформенности?
[16:40:25] <NegatiV> wilgib: нет
[16:45:19] <wilgib> NegatiV: ширина полей в Download queue, Favorite hubs, Favorite users тоже не сохраняется.
[16:55:40] wilgib вышел(а) из комнаты
[17:27:24] NegatiV вышел(а) из комнаты
[17:31:58] NegatiV вошёл(а) в комнату
[17:37:06] NegatiV вышел(а) из комнаты
[18:27:01] Ским вышел(а) из комнаты
[18:30:49] Ским вошёл(а) в комнату
[19:20:10] NegatiV вошёл(а) в комнату
[19:29:43] <NegatiV> 0xd34df00d: DCminator
Клиент DC, основанный на qdc/LinuxDC++.
[19:29:56] <NegatiV> так у вас уже есть сам плагин?
[19:31:16] <0xd34df00d> NegatiV: ты хреново считаешь.
[19:31:58] <0xd34df00d> NegatiV: если 32% в *Qt*, то это необязательно вина Qt.
[19:32:09] <0xd34df00d> Ты можешь просто неправильно ее готовить )
[19:32:19] <0xd34df00d> NegatiV: нету там плагина, я на него забил. Ядро от вас, dcpp статично собирается.
[19:33:19] <NegatiV> 0xd34df00d: у меня нет примера моделей которые не загнутся при 20 обновлениях в секунду
[19:34:14] <0xd34df00d> NegatiV: а ты чего ждал от Qt, магии? )
[19:35:30] <NegatiV> 0xd34df00d: магии я совсем не жадл
[19:35:32] <NegatiV> *ждал
[19:35:45] <0xd34df00d> Отойду на N минут.
[19:36:07] <NegatiV> я просто не пойму, как одна и таже может так сильно лажать
[19:36:13] <NegatiV> *модель
[19:44:47] wilgib вошёл(а) в комнату
[19:52:42] Abram вышел(а) из комнаты
[19:53:52] <wilgib> NegatiV: по-поводу переписывания userlist без Qt - ты же говорил что в EiskaltDC-1.0.41 используется тот же самый код, так может дело в неэффективном взаимодействии ядра dc++ с Qt. В чём концептуальное отличие твоей модели от модели применяемой в LinuxDC++, или отличий нет, а разница только в тулките?
[19:55:32] <NegatiV> wilgib: разница в том что я для отображения данных (юзеров) использую слой абстракции от данных (модель данных), а linuxdcpp и просто dc++ - нет
[19:56:18] <NegatiV> а не взаимодействую с данными напрямую - делаю вызов "доюавить то-то", "удалить это", "обновить" и все
[19:56:27] <NegatiV> *добавить
[19:59:54] <wilgib> NegatiV: "разница в том что я для отображения данных (юзеров) использую слой абстракции от данных (модель данных), а linuxdcpp и просто dc++ - нет" - так может попробовать взаимодействовать напрямую, так же как и эти клиенты?
[20:01:31] <NegatiV> я это и имел ввиду когда говорил что попробую переписать список юзеров
[20:14:40] wilgib вышел(а) из комнаты
[20:24:22] 0xd34df00d вышел(а) из комнаты
[20:24:51] 0xd34df00d вошёл(а) в комнату
[20:25:12] <0xd34df00d> ГОВНО.
[20:25:24] <0xd34df00d> В смысле, не нужно настолько ухудшать архитектуру из-за тормозов.
[20:25:28] <0xd34df00d> Лучше время побольше поставьте.
[20:25:37] <0xd34df00d> И ваще подождите.
[20:26:01] <0xd34df00d> NegatiV: давай доведем до бетки это все, потом впилим в личкрафты, а там я смогу уже нормально это все отпрофилировать.
[20:26:42] <NegatiV> 0xd34df00d: а ты эксцентричен) я вот тут курю маны по lazy population
[20:27:29] <NegatiV> как вариант очень даже неплохо
[20:29:17] <0xd34df00d> Я просто упоролся )
[20:29:22] <0xd34df00d> Щас еще ебилды распилить.
[20:29:32] <0xd34df00d> Дораспиливать, вернее.
[20:30:50] <0xd34df00d> Если ты про lazy population как хреновину, реализованную в Qt, в виде canFetchMore и еще чо-то там, то вряд ли получится вменяемо прикрутить в данном случае.
[20:31:23] <NegatiV> 0xd34df00d: ты не представляешь, как я затрахался с с этим списком юзеров)
[20:31:44] <NegatiV> ну почему - нового юзера не добавлять настолько насколько это возможно
[20:31:58] <NegatiV> в самый последний момент начать заполнение
[20:32:24] <NegatiV> хотя при скроллинге будут дикие тормоза..
[20:33:27] <0xd34df00d> Это.
[20:33:35] <0xd34df00d> А юзеров можно как-то разгруппировать на разные категории?
[20:33:44] <0xd34df00d> По хабу/первым трем цифрам IP/whatever.
[20:34:05] <0xd34df00d> Получится искусственное, но относительно вменяемое уменьшение количества пользователей.
[20:34:20] <0xd34df00d> Хочешь пофапать на список пользователей — держи 10 страниц. Хочешь найти кого-то — держи строку фильтра.
[20:34:39] <NegatiV> гарантированно можно разгруппировать только по принципу оператор/не-оператор
[20:34:57] <NegatiV> учитывая что опов на 12к пользователей не более 20
[20:35:05] <NegatiV> группировка не имеет смысла
[20:35:42] <0xd34df00d> Хреново.
[20:36:00] <NegatiV> можно еще разбить по буквам алфавита))
[20:36:26] <NegatiV> но для юзеров будет очень неожиданным подходом)
[20:36:36] <0xd34df00d> Знаешь, чо сделай.
[20:36:38] <0xd34df00d> Сделай вот чо.
[20:36:47] <0xd34df00d> Разбей по буквам алфавита, риальни.
[20:36:56] <0xd34df00d> Только не говори юзеру, что разбито по буквам алфавита )
[20:37:03] <0xd34df00d> Сделай просто переключатель страниц, и ок.
[20:38:14] <NegatiV> хм, костыльно как-то)
[20:39:38] <NegatiV> 0xd34df00d: блин, если наплевать на сжирание проца на процах с низкой частотой - то хоть сейчас в личкрафт добавляй
[20:39:51] <NegatiV> *сорри за тофтологию
[20:40:50] <NegatiV> просто я не послать пользователей со словами "не нравиться - не жрите", буду до последнего выжимать из Qt все что только возможно
[20:40:57] <NegatiV> *я не могу
[20:41:10] <0xd34df00d> NegatiV: реши, что важнее.
[20:41:13] <0xd34df00d> NegatiV: вот для тебя лично.
[20:41:36] <0xd34df00d> NegatiV: неподдерживаемый говнокод, зато быстрее на 20%, либо сжирание проца на хабах с сотнями тысяч юзеров на слабых процах.
[20:42:06] <0xd34df00d> NegatiV: так, давай по-другому.
[20:42:11] <0xd34df00d> NegatiV: ты цмейком собираешься?
[20:42:17] <NegatiV> 0xd34df00d: угу
[20:42:25] <0xd34df00d> NegatiV: поставить google perftools сможешь?
[20:43:09] <0xd34df00d> NegatiV: если да — скажу, чо добавить в цмейклистсы, как собрать, как запустить и что потом мне прислать.
[20:43:32] <NegatiV> 0xd34df00d: где их взять?
[20:43:37] <0xd34df00d> NegatiV: у тебя какая ОС?
[20:43:43] <NegatiV> arch linux
[20:44:04] <0xd34df00d> Сделай поиск либо по google, либо по perftools.
[20:44:22] <NegatiV> уже нашел
[20:45:47] <NegatiV> 0xd34df00d: собираю, что дальше?
[20:47:28] <0xd34df00d> NegatiV: IF (GPTOOLS_CPU AND GPTOOLS_MEM)                                                                                                                                                                                              
    SET (GPTOOLS_CPU FALSE)                                                                                                                                                                                                    
    SET (GPTOOLS_MEM FALSE)                                                                                                                                                                                                    
    SET (GPTOOLS_CPU_AND_MEM TRUE)                                                                                                                                                                                            
ENDIF (GPTOOLS_CPU AND GPTOOLS_MEM)                                                                                                                                                                                            
IF (GPTOOLS_MEM)                                                                                                                                                                                                              
    MESSAGE (STATUS "Enabled memory profiling via Google perftools")                                                                                                                                                          
    SET (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -ltcmalloc")                                                                                                                                                        
    SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -ltcmalloc")                                                                                                                                                  
ENDIF (GPTOOLS_MEM)                                                                                                                                                                                                            
IF (GPTOOLS_CPU)                                                                                                                                                                                                              
    MESSAGE (STATUS "Enabled CPU profiling via Google perftools")                                                                                                                                                              
    SET (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lprofiler")                                                                                                                                                        
    SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lprofiler")                                                                                                                                                  
ENDIF (GPTOOLS_CPU)                                                                                                                                                                                                            
IF (GPTOOLS_CPU_AND_MEM)                                                                                                                                                                                                      
    MESSAGE (STATUS "Enabled both CPU and memory profiling via Google perftools")                                                                                                                                              
    SET (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -ltcmalloc_and_profiler")                                                                                                                                          
    SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -ltcmalloc_and_profiler")                                                                                                                                    
ENDIF (GPTOOLS_CPU_AND_MEM)
[20:47:33] <0xd34df00d> Добавь это в свой цмейклистс.
[20:48:20] <NegatiV> черт, у меня либу unwind найти не может
[20:49:29] <NegatiV> сейчас ее соберу и продолжим)
[20:54:53] <NegatiV> 0xd34df00d: добавид
[20:54:57] <NegatiV> *добавил
[20:55:00] <NegatiV> что дальше?
[20:55:33] <0xd34df00d> Ну, сделай лучше отдельную директорию под этот билд и добавь к строке вызова cmake -DGPTOOLS_CPU:BOOL=True
[20:55:36] <0xd34df00d> NegatiV:
[20:57:06] <NegatiV> 0xd34df00d: пересобирается
[20:57:12] <NegatiV> дальше
[20:59:53] <0xd34df00d> NegatiV: запускай как CPUPROFILE=/tmp/yourappdata.prof yourapplication
[20:59:59] <0xd34df00d> NegatiV: вот такая прям строка, ога.
[21:00:06] <0xd34df00d> NegatiV: делай то, в результате чего оно тормозит.
[21:00:24] <NegatiV> 0xd34df00d: т.е. просто запустить?))
[21:00:41] <0xd34df00d> NegatiV: с выставленной переменной окружения CPUPROFILE )
[21:01:28] <NegatiV> 0xd34df00d: запустилось, что дальше?
[21:02:00] <0xd34df00d> NegatiV: ну, делай, чтобы оно затормозило.
[21:02:01] <NegatiV> дай угадаю, прислать тебе?
[21:02:17] <NegatiV> 0xd34df00d: сделал
[21:02:24] <0xd34df00d> Нет.
[21:02:29] <0xd34df00d> Выйди из приложения нормально.
[21:02:38] <0xd34df00d> Пусть побольше потормозит.
[21:02:41] <0xd34df00d> Статистика соберется и все дела.
[21:03:11] <NegatiV> 0xd34df00d: да он не тормозит)) юзеры пришли/ушли - все
[21:03:19] <0xd34df00d> NegatiV: сделай, чтобы тормозило )
[21:03:23] <0xd34df00d> Иначе смысла оно не имеет.
[21:03:58] <0xd34df00d> Значит, когда затормозишь и соберешь статистики, сделай pprof --callgrind /path/to/your/executable /tmp/yourappdata.prof > output и пришли мне файл output.
[21:06:51] <NegatiV> 0xd34df00d: куда слать?
[21:07:08] <0xd34df00d> dump.bitcheese.net
[21:08:08] <NegatiV> 0xd34df00d: http://dump.bitcheese.net/files/typytif/output
[21:11:40] <NegatiV> 0xd34df00d: ваш диагноз, доктор?
[21:14:48] <0xd34df00d> NegatiV: зачем у тебя в коде qLowerBound?
[21:15:25] <0xd34df00d> Блин, без сорсов нереально.
[21:15:40] <NegatiV> сек. сейчас тебе кусолк кода кину
[21:15:56] <0xd34df00d> HubFrame::customEvent покажи )
[21:15:59] <0xd34df00d> Или лучше ссыль на файл.
[21:16:18] <NegatiV> http://dpaste.com/hold/158376/
[21:16:29] <NegatiV> qLowerBound - сортировка
[21:16:41] <NegatiV> строка 109
[21:17:56] <NegatiV> http://dpaste.com/hold/158378/
[21:19:38] Ским вышел(а) из комнаты
[21:20:04] Ским вошёл(а) в комнату
[21:22:05] Ским вышел(а) из комнаты
[21:22:15] Ским вошёл(а) в комнату
[21:22:39] <0xd34df00d> Собираешь ты, естественно, в Release или RelWithDebInfo?
[21:23:17] <NegatiV> 0xd34df00d: я собираю как RelWithDebInfo
[21:23:29] <NegatiV> остальные скорее всего Release
[21:23:48] <0xd34df00d> Ок.
[21:24:12] <0xd34df00d> on_UserUpdated покажи плиз.
[21:26:22] <NegatiV> 0xd34df00d: http://dpaste.com/hold/158381/
[21:27:42] <NegatiV> left, right - остались еще со старой версии этого кода
[21:27:51] <NegatiV> я забыл их удалить
[21:28:09] <NegatiV> -а нет, не забыл)
[21:28:22] <NegatiV> все перерисовывается
[21:28:31] <NegatiV> блин, в голове каша
[21:29:18] <0xd34df00d> Мм.
[21:29:30] <0xd34df00d> Слушай, я сходу не могу сказать ничего чуть более конкретного.
[21:29:33] <0xd34df00d> Надо вставлять дебаговые трейсы.
[21:29:37] <0xd34df00d> Это мне уже самому с сорсами копаться )
[21:31:06] <NegatiV> 0xd34df00d: да там нет моментов где может быть оверхед
[21:31:29] <NegatiV> особенно при обычном обновлении юзеров
[21:31:39] gray_graff вышел(а) из комнаты
[21:32:11] <0xd34df00d> HubFrame::getParams?
[21:33:51] <NegatiV> void HubFrame::getParams(HubFrame::VarMap &map, const Identity &id){
    map["NICK"] = _q(id.getNick());
    map["SHARE"] = qlonglong(id.getBytesShared());
    map["COMM"] = _q(id.getDescription());
    map["TAG"] = _q(id.getTag());
    map["CONN"] = _q(id.getConnection());
    map["IP"] = _q(id.getIp());
    map["EMAIL"] = _q(id.getEmail());
    map["ISOP"] = id.isOp();
    map["SPEED"] = QString::fromStdString(id.getConnection());
    map["AWAY"] = id.isAway();
    CID cid = id.getUser()->getCID();
    map["CID"] = _q(cid.toBase32());
}
[21:34:00] <NegatiV> ничего криминального
[21:35:21] <NegatiV> map передаю из UserUpdetedEvent (поле getMap), т.е. копирования не происходит
[21:35:47] <NegatiV> в on_userUpdated передаю map по ссылке
[21:35:58] <NegatiV> так что проблема точно не в этом
[21:36:22] <NegatiV> VarMap = QHash<QString, QVariant>
[21:45:24] WiseLord вошёл(а) в комнату
[21:54:33] <NegatiV> WiseLord: можешь посоветовать чего-нибудь в стиле "Крейсер "Галактика" ?
[22:00:54] <WiseLord> ой..
[22:00:56] <WiseLord> да
[22:01:17] <WiseLord> Звёздный путь: Энтерпрайз
[22:01:27] <WiseLord> На краю вселенной
[22:02:24] <WiseLord> а сейчас новый сериал пошёл, на lostfilm есть
[22:02:26] <NegatiV> WiseLord: ок. спс
[22:02:31] <NegatiV> каприка?
[22:02:32] <WiseLord> Каприка вроде
[22:02:34] <WiseLord> угу
[22:02:41] <WiseLord> но не смотрел его ещё я
[22:02:41] <NegatiV> говорят не очень
[22:03:01] <NegatiV> типа рядом с галактикой даже сравнивать нельзя
[22:03:23] <WiseLord> у этих что я назвал сюжет не совсем такой как у галактики
[22:03:32] <WiseLord> но тоже про космос и приключения там
[22:04:00] <WiseLord> Энтерпрайз - вроде предыстории всех стартреков, просто снят раньше
[22:04:04] <NegatiV> ну я понял что не как в галактике, просто хочется чего-нибудь подобного глянуть
[22:04:06] <WiseLord> точнее, снят недавно
[22:05:12] <WiseLord> а На краю вселенной - как земной космонавт (наше время) каким-то хитрым образом через червоточину попадает далеко-далеко в просторы вселенной
[22:05:13] <WiseLord> ну а там уже свои цивилизации
[22:05:29] <WiseLord> и он пытается выжить и найти Землю
[22:07:04] <NegatiV> начну-ка наверное с farscape
[22:07:25] <WiseLord> ага
[22:07:35] <WiseLord> на википедии описано в общих чертах
[22:08:59] <WiseLord> кстати, под винду кому-нибудь уже удавалось собрать eiskaltdcpp?
[22:09:55] <0xd34df00d> Дада.
[22:09:59] <0xd34df00d> ХОтет фарскейп.
[22:10:41] <NegatiV> WiseLord: судя по всему - нет)
[22:11:01] <NegatiV> зато собрали под FreeBSD)
[22:11:16] <WiseLord> но судя по всему, особых проблем быть не должно?
[22:11:31] <NegatiV> WiseLord: там проблема только с iconv была
[22:11:45] <NegatiV> все пофиксили, так что собирается
[22:12:22] <WiseLord> надо будет каких-нибудь особых "рюшечек" придумать, полезностей
[22:12:30] <WiseLord> чтобы как-то выделиться на фоне других клиентов в винде
[22:13:11] <NegatiV> WiseLord: пока что наша главная полезность - скорость и простота)
[22:16:28] <WiseLord> правда сочетание Qt+Windows пока не сильно вяжется с понятием скорости..
[22:16:36] <WiseLord> эта дурацкая необходимость тащить весь Qt за собой..
[22:16:49] <tehnick> Что? о_О
[22:17:06] <WiseLord> тот же SMPlayer - мегабайта полтора под linux, ибо Qt предполагается как часть системы
[22:17:17] <WiseLord> а под винду он же 10Мб, ибо тянет за собой QtGui.dll и прочее
[22:17:28] <0xd34df00d> Windows вообще мало с чем вяжется.
[22:17:31] <WiseLord> и каждая Qt-софтина тянет свою копию библиотек Qt в винду
[22:17:33] <0xd34df00d> Ибо отсутствие пакетного менеджера.
[22:17:40] <tehnick> А бинарник с программой весит применрно столько же.
[22:17:52] <0xd34df00d> Поцкет с личкрафтом под венды весит 16 метров.
[22:17:59] <NegatiV> WiseLord: я и не позиционирую его как клиент для Windows, просто не исключаю возможность его сборки там
[22:18:01] <0xd34df00d> Из них дофига — кути.
[22:18:05] <tehnick> Что за личкрафт?
[22:18:17] <0xd34df00d> tehnick: прога моя, в которую потом, скорее всего, впилится айскальт++.
[22:18:28] <tehnick> Ссылку?
[22:18:33] <0xd34df00d> tehnick: модульный кроссплатформенный интернет-клиент, ога. Уже есть модули для браузеров, торрентов и прочего.
[22:18:38] <0xd34df00d> tehnick: у тебя какая ось?
[22:18:43] <tehnick> дебиан
[22:18:45] <0xd34df00d> Мм.
[22:18:50] <0xd34df00d> Qt 4.6, облом под дебианом.
[22:18:55] <0xd34df00d> Qt 4.5-билд чертовски старый.
[22:18:58] <0xd34df00d> С октября-ноября еще.
[22:19:02] <tehnick> У меня 4.6.0
[22:19:05] <0xd34df00d> О, отлично.
[22:19:54] <0xd34df00d> tehnick: http://leechcraft.org/projects/leechcraft/wiki/Building_from_source
[22:20:21] <WiseLord> хех.. посмотреть на твой продукт, что ли
[22:20:27] <WiseLord> тем паче, что в rion он есть )
[22:21:08] <tehnick> Комбайн однако.
[22:21:19] <WiseLord> а браузер там на каком движке?
[22:21:20] <WiseLord> gecko?
[22:21:25] <0xd34df00d> WiseLord: webkit.
[22:21:37] <0xd34df00d> Gecko крут, конечно, как движок, но весьма хреново поддается встраиванию.
[22:21:46] <0xd34df00d> tehnick: нифига. Плагины же )
[22:21:49] <WiseLord> эхх
[22:21:55] <WiseLord> ну почему ж я не программист..
[22:22:02] <NegatiV> 0xd34df00d: а почему Qt-4.6? единственная для меня причина юзать именно эту версию - обход DOM-дерева в webkit
[22:22:04] <0xd34df00d> WiseLord: я как раз пилю распиленные ебилды, ога.
[22:22:18] <0xd34df00d> NegatiV: DOM-дерево и несколько перделок.
[22:22:42] <NegatiV> 0xd34df00d: kinetic? =))
[22:22:44] <0xd34df00d> Ога )
[22:22:58] <NegatiV> да ну
[22:23:33] <0xd34df00d> А чо?
[22:23:42] <NegatiV> нафиг он тебе там?
[22:23:49] <0xd34df00d> Нотификейшны через него сейчас.
[22:23:57] <0xd34df00d> Кое-что в заменителе плеера на ютубах через него сейчас.
[22:24:08] <WiseLord> 0xd34df00d: а необходимость в более свежих, нежели стабильные в gentoo, boost и boost-build, оправдана?
[22:24:10] <0xd34df00d> Glance через него сейчас (это когда переключаешься между табами по их превьюшкам).
[22:24:22] <0xd34df00d> WiseLord: boost 1.36 не гарантируется либторрентом.
[22:24:25] <WiseLord> а то что-то ставить в другой слот лень
[22:24:40] <WiseLord> ясно.. так и быть, поставим
[22:24:44] <0xd34df00d> WiseLord: 1.37 работает, но его надо патчить, ибо в нем баг, мешающий работе с ядрами свежее 2.6.2x, где x я забыл.
[22:24:49] <0xd34df00d> Поэтому я и написал 1.38.
[22:25:07] <0xd34df00d> И если в ядрах epoll включен.
[22:25:25] <WiseLord> а с 1.41 нормально?
[22:25:31] <0xd34df00d> Вполне.
[22:25:51] <NegatiV> 0xd34df00d: ты не думал пилить KDE?
[22:26:00] <WiseLord> ладно, тогда временно с ACCEPT_KEYWORDS и oneshot в командной строке соберу
[22:26:02] <NegatiV> там такие люди очень нужны))
[22:27:14] <NegatiV> может положить болт на DE-независимость и переписать все на kdelibs
[22:27:41] <0xd34df00d> NegatiV: не думал.
[22:27:45] <0xd34df00d> NegatiV: вернее. думал )
[22:27:53] <0xd34df00d> NegatiV: но я думаю написать почти свои, но другие, лол.
[22:27:59] <0xd34df00d> NegatiV: какие — такие? )
[22:28:23] <NegatiV> 0xd34df00d: программисты)
[22:28:27] <0xd34df00d> Лолоэ.
[22:28:29] <0xd34df00d> Мне они еще более нужны )
[22:29:08] <WiseLord> )
[22:30:25] <tehnick> 0xd34df00d: на сайте нашел готовые пакеты для дебиана, они устарели?
[22:31:41] <NegatiV> tehnick: ты на анстейбл сидишь?
[22:32:19] <0xd34df00d> tehnick: сильно-сильно устарели.
[22:32:20] <tehnick> 0.3.60 --- не последняя сборка конечно, но свежая судя по всему
[22:32:46] <tehnick> ChangeLog 0.3.70
[22:32:52] <tehnick> Почему сильно?
[22:33:00] <0xd34df00d> Ну, потому что там говно. а здесь меньше говно )
[22:33:06] <tehnick> NegatiV: да, debian sid
[22:33:15] <0xd34df00d> git diff --stat 0.3.60..HEAD | tail -n 1
681 files changed, 46290 insertions(+), 21852 deletions(-)
[22:33:22] <0xd34df00d> Нутыпонел.
[22:33:45] <tehnick> Ага.
[22:35:02] <WiseLord> посмотрел сегодня Аватар в 3Д
[22:35:10] <WiseLord> какие-то противоречивые ощущения
[22:35:24] <NegatiV> tehnick: я тоже им пользовался (до этого 1 год юзал стейбл и еще 1 год тестинг), советую тебе присмотреться к арчу
[22:35:32] <NegatiV> WiseLord: я его даже не смотрел)
[22:35:51] <NegatiV> сюжет избит, а 3d я ненавижу
[22:36:00] <NegatiV> *да и 3d
[22:36:08] <WiseLord> ну я 3D раньше не видел
[22:36:25] <WiseLord> у нас в Минске только первый кинотеатр открылся в январе, с Dolby 3D
[22:36:36] <NegatiV> я читал об этом на хабре
[22:36:46] <NegatiV> говорят у вас там очереди были эпические
[22:36:58] <tehnick> Нет, я ошибся: это не комбайн, это конкурент Хром ОС...
[22:37:36] <NegatiV> )))
[22:37:41] <NegatiV> это вызов
[22:37:49] <WiseLord> а сюжет нормальный
[22:39:01] <tehnick> http://exler.ru/films/21-12-2009.htm
[22:39:08] <tehnick> К вопросу об Аватаре...
[22:43:29] <WiseLord> да, на удивление разумный отзыв
[22:43:52] <WiseLord> а то как-то больше принято действительно какашками забрасывать
[22:44:03] <WiseLord> мол, я такой крутой критик, что даже этот ваш Аватар обосру
[22:44:06] <WiseLord> извините за выражение
[22:44:56] <WiseLord> а сюжет.. банальным он становится в последние минут десять, когда собственно в некотором роде хэппи-энд и наступает
[22:45:14] <WiseLord> а так - два часа в напряжении держит
[22:45:28] <WiseLord> не обычная система завязка - кульминация - развязка
[22:45:39] NegatiV вспомнил сравнение сценария Покахонтас и Аватар =)
[22:45:47] <WiseLord> а завязка - кульминация - трагедия - кульминация - трагедия - кульминация - развязка
[22:48:19] <NegatiV> WiseLord: нового Шерлока не смотрел? он тебе никого не напомнил?))
[22:49:26] <WiseLord> не смотрел
[22:49:44] <WiseLord> но по ролику мне отчего-то "Большой куш" вспомнился
[22:50:19] <NegatiV> WiseLord: фильм очень хорош, + Холмс смахивающий чем-то на Хайса доставляет
[22:50:31] <NegatiV> *Хауса
[22:50:37] <WiseLord> а ты Большой куш смотрел?
[22:50:39] <WiseLord> Snatch
[22:50:52] <WiseLord> в Гоблина варианте переводе вообще улёт
[22:50:57] <NegatiV> да, давно еще
[22:51:22] <NegatiV> там еще вин дизель снимается, не?
[22:51:36] <WiseLord> не помню его
[22:51:43] <WiseLord> про цыгана и подпольный бокс
[22:51:52] <WiseLord> там этот.. Питт снимается в главной роли
[22:52:46] <NegatiV> не видел
[22:52:53] <WiseLord> http://ru.wikipedia.org/wiki/%D0%91%D0%BE%D0%BB%D1%8C%D1%88%D0%BE%D0%B9_%D0%BA%D1%83%D1%88
[22:52:59] <NegatiV> с другим фильмом перепутал
[22:53:09] <WiseLord> Борис Хрен Попадёшь
[22:53:18] <WiseLord> ничего не навевает?
[22:53:37] <NegatiV> не, это Гай Ричи - его филмы мне не нравятся
[22:53:49] <NegatiV> карты, деньги, два ствола
[22:53:54] <NegatiV> и прочее
[22:53:54] <WiseLord> 25 место в Топ-250 кинопоиска
[22:54:03] <WiseLord> посмотри
[22:54:16] <WiseLord> мы с соседом по общаге во время учёбы постоянно пересматривали
[22:54:37] <WiseLord> желательно в Гоблина переводе
[22:55:27] <NegatiV> поставил качаться, авось доставит)
[22:55:38] <WiseLord> c гоблином?
[22:55:43] <NegatiV> вроде да
[22:55:55] <NegatiV> папка подписана как "Гоблин"
[22:55:58] <WiseLord> ну.. в Гоблина варианте оно нехорошим словом называется
[22:56:03] <WiseLord> http://torrents.ru/forum/viewtopic.php?t=2297249
[23:41:18] WiseLord вышел(а) из комнаты
[23:41:20] tehnick вышел(а) из комнаты
[23:47:44] tehnick вошёл(а) в комнату
[23:54:04] tehnick вышел(а) из комнаты
[23:54:14] tehnick вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!