Страница: 1 |
Страница: 1 |
Вопрос: Быстрое выполнение скрипта
Добавлено: 03.06.06 14:49
Автор вопроса: Страшный Сон
Есть у меня прога для обработки изображений, которая компилирует и выполняет примитивные скрипты, вводимые в текстовое поле, что-то типа ассемблера. :D Я сделал по-тупому - текстовый скрипт преобразуется в структурное представление (каждый элемент массива структур содержит код инструкции и ее параметры). Далее гоняю этот массив в цикле, через switch (Select Case) определяю тип инструкции (всего их у меня 48), и выполняю нужные действия. Работает, но очень медленно - в десятки раз медленнее, чем просто программа. А можно ли в VB этот процесс ускорить, напрямую посылая инструкции в проц, как во всех нормальных прогах со скриптами?
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 04.06.06 20:56
Напиши компилятор
Номер ответа: 2
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #2
Добавлено: 05.06.06 18:10
а чё не скомпилировать длл?
Номер ответа: 3
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #3
Добавлено: 06.06.06 10:33
Повисни на VBScript и ScriptControl
Номер ответа: 4
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #4
Добавлено: 06.06.06 12:19
Гы... а как написать компилятор?
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 06.06.06 13:42
чуть-чуть сложнее чем декомпилятор
Номер ответа: 6
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #6
Добавлено: 06.06.06 20:23
Почему тогда компиляторов немеряно, а декомпиляторов днем с огнем не сыщешь?
Номер ответа: 7
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #7
Добавлено: 06.06.06 22:45
Декомпилятор сложнее, чем компилятор.
Номер ответа: 8
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #8
Добавлено: 07.06.06 04:12
ок, см. пост 1, пиши компилятор )) Я буду первым бета-тестером...
Номер ответа: 9
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #9
Добавлено: 07.06.06 11:28
Дык у меня все скомпилировано уже, нужно только ассемблировать... вот только многие инструкции, которые есть в моем скрипте, отсутствуют в проце (всякие там векторные операции), короче говоря, это мини-процедуры. Скрипты такого плана:
set eb y
mul ea 2
mul eb 2
pixc a ea eb ec
add ea 256
pixc a ea eb ef
sub ea 256
add eb 256
pixc a ea eb ei
add ea 256
pixc a ea eb el
powc ec 461
powc ed 461
powc ee 461
powc ef 461
powc eg 461
powc eh 461
powc ei 461
powc ej 461
powc ek 461
powc el 461
powc em 461
powc en 461
add ec ef
add ec ei
add ec el
div ec 4
add ed eg
add ed ej
add ed em
div ed 4
add ee eh
add ee ek
add ee en
div ee 4
powc ec 142
powc ed 142
powc ee 142
rpix ec
Выложенный скрипт ужимает картинку в 2 раза с фильтрацией. На ужимание картинки размером 640x480 до 320x240 уходит чуть меньше секунды.
Есть и покруче скрипты, с циклами:
set e2 0 |1
set e3 0 |2
set eb y |3
set ed 0 |4
set ea x |5
set ec 0 |6
set ee ec |7
set ef ed |8
mul ee 256 |9
mul ef 256 |10
pixc b ee ef eg |11
pixc a ea eb ej |12
mulc ej eg |13
mulc ek eh |14
mulc el ei |15
add e1 ej |16
add e2 ek |17
add e3 el |18
sub ea 256 |19
add ec 1 |20
ifn ec bxr 7 |21
sub eb 256 |22
add ed 1 |23
ifn ed byr 5 |24
div e1 700
div e2 700
div e3 700
rpix e1
Фильтрация изображения по матрице произвольного размера. Работает уже очень медленно. Меня интересуют, как поступают разработчики программ, выполняя скрипт прямо в программе с нормальной скоростью. Не switch'ами же инструкции отбирают.