В общем проблема такова.
Я открываю файл размером, например "250 Кб". Затем конвертирую Stream этих данных в HEX, а уже HEX перевожу в BIN путем замены от 0 до F двоичными данными. Затем я отрисовываю каждый бит по определенному алгоритму.
Так вот, проблема заключается в том что перебор замена и отрисовка при таком размере файла происходят ОЧЕНЬ медленно, чуть ли не катастрофически.
Как можно ускорить этот процесс? схема прилагаться
43566732project2.rar.
------------ Дoбавленo в 13.32:
Просто я с потоками не дружу) постоянно какие то глюки и лаги
Этот топик читают: Гость
|
Ответов: 1043
Рейтинг: 33
|
|||
| карма: 0 |
| ||
| файлы: 1 | 43566732project2.rar [152.1KB] [229] |
|
Ответов: 8974
Рейтинг: 824
|
|||
|
ashkalov, мудрый Tad всегда советует: на бумажке алгоритм нарисовать, а уже потом его кодировать
1. Зачем отрисовывать каждую точку немедлено, бедный компьютер перерисовывает картинку два миллиона раз, для этого и компонент придуман, чтобы накопить ВСЕ точки, а потом разом отрисовать. 2. Верх неприличия байты->НЕХ->BIN->строка->перебор строки! Есть же компонеты для чтения из Stream, преобразования байтов в бины! code_34531.txt |
|||
| карма: 19 |
| ||
| файлы: 1 | code_34531.txt [3KB] [330] |
|
Ответов: 1043
Рейтинг: 33
|
|||
|
Леонид, у меня ваша схема еще дольше думает
------------ Дoбавленo в 14.27: Леонид, а нельзя как то быстрее сделать, а то пользователям не захочется 5 минут смотреть на зависшее окно... ------------ Дoбавленo в 14.31: Может такой возможности в hiasm и вовсе нет, а то я уже 4 день над этим бьюсь ((( ------------ Дoбавленo в 14.33: Мне надо чтобы пользователь нажал кнопку и сразу программа ему отрисовала картинку |
|||
| карма: 0 |
|
|
Ответов: 1536
Рейтинг: 176
|
|||
|
ashkalov писал(а): Леонид, у меня ваша схема еще дольше думает Тест на скорость code_34533.txt разница в 3 раза. Вероятно спасёт ситуацию IC. |
|||
| карма: 1 |
| ||
| файлы: 1 | code_34533.txt [2.4KB] [247] |
|
Ответов: 1043
Рейтинг: 33
|
|||
|
ser_davkin, я говорю не о преобразовании данных, а о отрисовке ( она очень медленная)
|
|||
| карма: 0 |
|
|
Ответов: 1536
Рейтинг: 176
|
|||
|
Сократил схему Леонид-а:
|
|||
| карма: 1 |
|
|
Ответов: 1043
Рейтинг: 33
|
|||
|
ser_davkin, в вашем случае теряется функционал программы
------------ Дoбавленo в 15.56: так а быстрее заставить ее отрисовывать можно то? |
|||
| карма: 0 |
|
|
Ответов: 8974
Рейтинг: 824
|
|||
|
ashkalov писал(а): ..у меня ваша схема еще дольше думает.. |
|||
| карма: 19 |
| ||
| файлы: 1 | test_speed_project.jpg [125.4KB] [557] |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
|
Редактировалось 2 раз(а), последний 2017-06-17 20:37:41 |
|||
| карма: 0 |
|
|
Ответов: 758
Рейтинг: 112
|
|||
| карма: 1 |
| ||
| файлы: 1 | code_34541.txt [2.2KB] [225] |
|
Ответов: 8974
Рейтинг: 824
|
|||
|
miver, 14 секунд, но картинка-то не по алгоритму ТС
|
|||
| карма: 19 |
| ||
| файлы: 1 | test_14sec.jpg [27.2KB] [446] |
|
Ответов: 758
Рейтинг: 112
|
|||
|
Леонид, Странную штуку заметил - когда у меня размер точки стоит 1, то ничего не рисуется. Я поставил 2 и у меня рисует правильно. Попробуйте размер точки поменять
|
|||
| карма: 1 |
|
|
Ответов: 8974
Рейтинг: 824
|
|||
|
miver, всё работает:
|
|||
| карма: 19 |
| ||
| файлы: 1 | size_1_2.jpg [8.8KB] [435] |
|
Ответов: 1043
Рейтинг: 33
|
|||
|
14 многовато 5 сек это предел) да и алгоритм мой рассчитан на то, что через каждый октет добавляется интервал размером в 1 бит
|
|||
| карма: 0 |
|
|
Разработчик
Ответов: 26322
Рейтинг: 2147
|
|||
|
Если еще актуально, то вот реализация на IC. Используется самый быстрый из существующих в KOL методов -- ScanLine
bintobmp_002.sha |
|||
| карма: 22 |
| ||
| файлы: 1 | bintobmp_002.sha [269.9KB] [467] | ||
| Голосовали: | miver |
15




Поиск
Друзья
Администрация