В общем проблема такова.
Я открываю файл размером, например "250 Кб". Затем конвертирую Stream этих данных в HEX, а уже HEX перевожу в BIN путем замены от 0 до F двоичными данными. Затем я отрисовываю каждый бит по определенному алгоритму.
Так вот, проблема заключается в том что перебор замена и отрисовка при таком размере файла происходят ОЧЕНЬ медленно, чуть ли не катастрофически.
Как можно ускорить этот процесс? схема прилагаться
43566732project2.rar.
------------ Дoбавленo в 13.32:
Просто я с потоками не дружу) постоянно какие то глюки и лаги
Этот топик читают: Гость
Ответов: 1043
Рейтинг: 33
|
|||
карма: 0 |
| ||
файлы: 1 | 43566732project2.rar [152.1KB] [193] |
Ответов: 8926
Рейтинг: 823
|
|||
ashkalov, мудрый Tad всегда советует: на бумажке алгоритм нарисовать, а уже потом его кодировать Не идут советы впрок!
1. Зачем отрисовывать каждую точку немедлено, бедный компьютер перерисовывает картинку два миллиона раз, для этого и компонент придуман, чтобы накопить ВСЕ точки, а потом разом отрисовать. 2. Верх неприличия байты->НЕХ->BIN->строка->перебор строки! Есть же компонеты для чтения из Stream, преобразования байтов в бины! code_34531.txt |
|||
карма: 19 |
| ||
файлы: 1 | code_34531.txt [3KB] [271] |
Ответов: 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] [195] |
Ответов: 1043
Рейтинг: 33
|
|||
ser_davkin, я говорю не о преобразовании данных, а о отрисовке ( она очень медленная)
|
|||
карма: 0 |
|
Ответов: 1536
Рейтинг: 176
|
|||
Сократил схему Леонид-а:
|
|||
карма: 1 |
|
Ответов: 1043
Рейтинг: 33
|
|||
ser_davkin, в вашем случае теряется функционал программы
------------ Дoбавленo в 15.56: так а быстрее заставить ее отрисовывать можно то? |
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
ashkalov писал(а): ..у меня ваша схема еще дольше думает.. test_speed_project.jpg |
|||
карма: 19 |
| ||
файлы: 1 | test_speed_project.jpg [125.4KB] [481] |
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 2 раз(а), последний 2017-06-17 20:37:41 |
|||
карма: 0 |
|
Ответов: 758
Рейтинг: 112
|
|||
карма: 1 |
| ||
файлы: 1 | code_34541.txt [2.2KB] [177] |
Ответов: 8926
Рейтинг: 823
|
|||
miver, 14 секунд, но картинка-то не по алгоритму ТС
test_14sec.jpg |
|||
карма: 19 |
| ||
файлы: 1 | test_14sec.jpg [27.2KB] [384] |
Ответов: 758
Рейтинг: 112
|
|||
Леонид, Странную штуку заметил - когда у меня размер точки стоит 1, то ничего не рисуется. Я поставил 2 и у меня рисует правильно. Попробуйте размер точки поменять
|
|||
карма: 1 |
|
Ответов: 8926
Рейтинг: 823
|
|||
miver, всё работает:
size_1_2.jpg |
|||
карма: 19 |
| ||
файлы: 1 | size_1_2.jpg [8.8KB] [375] |
Ответов: 1043
Рейтинг: 33
|
|||
14 многовато 5 сек это предел) да и алгоритм мой рассчитан на то, что через каждый октет добавляется интервал размером в 1 бит
|
|||
карма: 0 |
|
Разработчик
Ответов: 26160
Рейтинг: 2127
|
|||
Если еще актуально, то вот реализация на IC. Используется самый быстрый из существующих в KOL методов -- ScanLine
bintobmp_002.sha |
|||
карма: 22 |
| ||
файлы: 1 | bintobmp_002.sha [269.9KB] [356] | ||
Голосовали: | miver |
15