Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
Влад |
1.7.2009, 16:07
Сообщение
#41
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: 8
|
Цитата(AD @ 30.6.2009, 15:59) Link Влад, исходя из твоих слов, следует заменить глобальные new и delete! Нет. Тут фича в том, что new и delete можно перегрузить для конкретного класса - именно того, который тормозит. |
|
|
|
|
AD |
1.7.2009, 16:10
Сообщение
#42
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Цитата(Влад @ 1.7.2009, 17:07) Link Нет. Тут фича в том, что new и delete можно перегрузить для конкретного класса - именно того, который тормозит. Да, видимо, придется! Еще раз проверил, все-таки притормаживает на выделении памяти! |
|
|
|
|
BRE |
1.7.2009, 16:49
Сообщение
#43
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Цитата(AD @ 1.7.2009, 17:10) Link Да, видимо, придется! А чем думаешь их заменить? В чем смысл? Цитата(AD @ 1.7.2009, 17:10) Link Еще раз проверил, все-таки притормаживает на выделении памяти! Попробуй задать в алокаторе такой размер, что бы все элементы гарантированно помещались в один chunk. И посмотри результаты в профилировщике. Странно все как-то. |
|
|
|
|
AD |
1.7.2009, 17:14
Сообщение
#44
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
У меня видоизменилась несколько структура, потому приведу ее еще раз:
Видно, что два вложенных цикла, на которых, по идее могли быть тормоза закомментированы (пока!) и все-равно чувствительная длительность по времени! Сообщение отредактировал AD - 1.7.2009, 17:18 |
|
|
|
|
AD |
1.7.2009, 17:57
Сообщение
#45
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Заметил такую странную вещь:
Указал CHUNK_SIZE = 2^20 (два в 20 степени). Все произошло моментально. Расскоментировал код, загрузка стала производиться довольно долго, а вот уже само отображение крайне шустрое (хотя раньше и при отображении были тормоза)! Буду продолжать искать длительные операции. Сейчас сделал CHUNK_SIZE = 2^13 (в 20 степени - все-таки не есть хорошо - чуть всю операционку не сожрало! |
|
|
|
|
Tonal |
2.7.2009, 8:04
Сообщение
#46
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17
|
Может всё же так:
Тогда размер Chunk::memory будет всегда кратен количеству элементов - не будут пропадать попусту невлезшие кусочки. Ну и размер chunk_size я бы поставил как среднее rec_descr.size() * 100, например. Да, ты ведь профилируешь релизную сборку, я надеюсь? |
|
|
|
|
AD |
2.7.2009, 9:11
Сообщение
#47
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Цитата(Tonal @ 2.7.2009, 9:04) Link Да, ты ведь профилируешь релизную сборку, я надеюсь? На счет профилировки хотел посоветоваться! Не помню как мне один раз удалось спрофилировать программу, но больше не удавалось. Причина следующая: файлы, которые генерирует MOC типа ui_tlv.h я создаю еще cpp, переношу туда setupUi, retranslateUi! Делаю это потому что кое-что изменяю в этих функциях! Так проблема в том, что при включенном профайлере компилятор каждый пересобирает проект, соответственно h-файлы все время пересоздаются и выдается куча ошибок. При попытке просто скомпилировать, он снова пересобирает проект. Есть способ победить эту штуку? Вот видоизменил распределитель. Пока не видны изменения в скорости: allocator Сообщение отредактировал AD - 2.7.2009, 10:50 |
|
|
|
|
AD |
2.7.2009, 10:51
Сообщение
#48
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Так.... совсем интересно. При загрузке большого количества логов программа терпит молный крах.
Пока попробую тогда реализовать вариант с массивами, описанный в code 2! |
|
|
|
|
Влад |
2.7.2009, 13:38
Сообщение
#49
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: 8
|
Видел: Link ?
|
|
|
|
|
AD |
3.7.2009, 12:00
Сообщение
#50
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Так, получилось ускорение с помощью массивов (пока что достаточное, но не необходимое)!
На следующей неделе все-таки доразбираюсь с распределителем памяти и постараюсь перевести решение для векторов. Код следующий: cpp-code Именно строки для ускорения кода - вот: Еще раз повторюсь, что с помощью векторов я все-таки постараюсь сделать корректный код, но чуть позже! СПАСИБО ВСЕМ ЗА ПОМОЩЬ! Еще, возможно, обращусь! Сообщение отредактировал AD - 3.7.2009, 12:04 |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 24.12.2025, 16:34 |