Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Быстрое выполнение скрипта Добавлено: 03.06.06 14:49  

Автор вопроса:  Страшный Сон
Есть у меня прога для обработки изображений, которая компилирует и выполняет примитивные скрипты, вводимые в текстовое поле, что-то типа ассемблера. :D Я сделал по-тупому - текстовый скрипт преобразуется в структурное представление (каждый элемент массива структур содержит код инструкции и ее параметры). Далее гоняю этот массив в цикле, через switch (Select Case) определяю тип инструкции (всего их у меня 48), и выполняю нужные действия. Работает, но очень медленно - в десятки раз медленнее, чем просто программа. А можно ли в VB этот процесс ускорить, напрямую посылая инструкции в проц, как во всех нормальных прогах со скриптами?

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #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 ea x
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 e1 0 |0
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'ами же инструкции отбирают.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам