Страница: 1 |
Studen правилно поднял тему. У меня аналогичная сит-ция. Вкратце суть: есть гигантский массив строк и нужно найти строку отвечаюшую каким-то требованиям. На басике Do... While длится несколько минут. На PB неск. секунд. Все хорошо, все замечательно. НО. Пока DLLка не закончит цикл, прога на VB "замерзает" наглухо. Первое что сделал в цикле PB внедрил SetWindowText Hwnd(где Hwnd Text1.wnd на форме VB) , [счетик выполнения]" ноль эмоций, возвращает [счетик выполнения], только после завершения. Потом добавил к этой байде ...DOEVENTS - заработало! Программа стала перетаскиваться мышкой в момент выполнения, в Text1 виден ход работы. Но, блин, скорость выполнения упала в несколько раз, т.е. стала как у басика. Гуру кодерных наук, может кто подскажет, че делать то. А иначе отпадает нужда в PB. P.S. То что CyRax предлагал - вводить дополнительную внешнюю функцию и одну глобальную переменную - в итоге все тоже самое. Пока DLLка занимается своим циклом "прошу меня не беспокоить".
Можно вынести твой цикл в отдельный поток, в PB есть функция для создания потоков, по моему Create Thread, посмотри в хелпе. Она как раз и создана для таких ситуаций как у тебя, примеры поищи на форуме http://powerbasic.com/support/forums/Ultimate.cgi Если правильно понял, то при каждом проходе цикла выводится информация в текстбокс. Можно это дело значительно ускорить, если выводить информацию не в каждом проходе, а например один раз в 100 проходов цикла, например: IF loopCounter MOD 100 = 0 THEN Ну и соответственно, если делаешь вывод ещё реже, то работает ещё быстрее. Не видел кода, поэтому наугад: если делаешь массиву REDIM, то можно тоже не каждый раз, а один раз на N проходов. Тоже ускоряет Ай, да, Alex! Ай, да, молодца! Спасибо за подсказку. Получилось все, что хотел. И индикация процесса и скорость выполнения несоизмерима с VB. Использовал THREAD CREATE ... Одна и таже задача на VB - 56 сек, на PV - 3,5 сек! Уже можно "беспокоить"? Если у тебя не получилось что то из предложенного мной, то это исключительно из за твоей лени (или некорректно поставленного вопроса). Можешь скачать с моего сайта прогу сравнения скоростей PB и VB (ту что для VB можешь не качать). Там есть пример потока. Страница: 1 |
Вопрос: И снова Процент выполнения DLL
Добавлено: 24.03.04 13:11
Автор вопроса: vb60
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
alex
Вопросов: 84
Ответов: 453
Профиль | | #1
Добавлено: 25.03.04 15:44
Номер ответа: 2
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #2
Добавлено: 25.03.04 20:49
'вывод информации
END IF
Номер ответа: 3
Автор ответа:
vb60
Вопросов: 3
Ответов: 1
Профиль | | #3
Добавлено: 26.03.04 09:07
Номер ответа: 4
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #4
Добавлено: 28.03.04 04:53