powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Компиляция MEMO поля
10 сообщений из 10, страница 1 из 1
Компиляция MEMO поля
    #35793039
Есть таблица с колонкой типа MEMO, в которой содержится код программы. Данный код используется при обработке другой таблицы. Для выполнения использую ExecScript, все нормально работает, но медленно, если строк в обрабатываемой таблице несколько тысяч. Преполагаю - это из-за того, что Fox постоянно перекомпилирует код обработки, может можно сделать Cache, чтобы ускорить этот процесс?
...
Рейтинг: 0 / 0
Компиляция MEMO поля
    #35793086
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создайте в этой таблице еще одно мемо поле

вытащите из мемео текс, суньте во врем-й прг,
компильните,
считайте fxp и суньте в поле Compiled

при выполнении считайте из Compiled, создайте в темп.каталоге файл
и выполняйте,
пересоздавать каждый раз необходимо после внесения изм-й,
новой копмиляции, заморочившись на какой-то флаг актуальности.
...
Рейтинг: 0 / 0
Компиляция MEMO поля
    #35793099
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ приведите текст скрипта

+ краткий алгоритм использования

попробуем оптимизировать
...
Рейтинг: 0 / 0
Компиляция MEMO поля
    #35793135
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот пример оптимизации, нужно было уйти от evaluate
здесь имеется алгоритм, который сканит курсор
(количество записей может быть ....)
и постоянно вычисляет одну и ту-же,
построенную по безумному алгоритму строку,
чтобы не использовать макроподстановку,
создаем врем-й файлик, компилим и постоянно зовем обычную готовую
фоксовую компилированную функцию
(бред было лень переписывать, поэтому именование переменных хромает)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
external procedure tmpScIns
local lcTmpProgFileName, llCreateTmpProc
lcTmpProgFileName = iif(reccount()> 2 , addbs(sys( 2023 ))+"tmpScIns.prg", "")

SCAN &s_c_cWhere
	if !llCreateTmpProc and !empty(lcTmpProgFileName)
		local lcOldNotify
		lcOldNotify =  lower(set("Notify"))
		set notify off
		try
			= strtofile("return " + s_c_cShablon, lcTmpProgFileName)
			compile (lcTmpProgFileName)
			set procedure to (lcTmpProgFileName) additive 
			llCreateTmpProc = .t.
		catch
			lcTmpProgFileName = ""
		endtry
		if lcOldNotify="on"
			set notify on
		endif
	endif
	s_c_nCounter = s_c_nCounter +  1 
	scatter memvar memo
	s_c_cIns = s_c_cIns + iif(llCreateTmpProc, tmpScIns(), evaluate(s_c_cShablon)) + s_c_InsSep

...
Рейтинг: 0 / 0
Компиляция MEMO поля
    #35793176
Вот сам пытаюсь это реализовать, только что делать, если у меня возврат из функции есть?
...
Рейтинг: 0 / 0
Компиляция MEMO поля
    #35793198
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcTmpProgFileName = addbs(sys(2023))+"ttttt.prg"
set procedure to (lcTmpProgFileName) additive

далее 2-мя способами - я не вижу Вашей реализации

Код: plaintext
1.
2.
3.
4.
local lnParam
if ttttt(@lnParam)
   .....
endif

Код: plaintext
1.
2.
local lnResult
lnResult=ttttt()

if llCreateTmpProc
release procedure (lcTmpProgFileName)
erase (lcTmpProgFileName) && если нужно прибить файл
endif
...
Рейтинг: 0 / 0
Компиляция MEMO поля
    #35793204
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при наличии доп.поля - храните компил.код рядом
и в темп.каталог вытаскивайте именно компил.код, тогда потребность
в компил.отпадает,
перекомп. нужно будет делать только в случае неактуальности
(если в основной скрипт внесли изменения)

покажите пожалуйста примерный скрипт
...
Рейтинг: 0 / 0
Компиляция MEMO поля
    #35793249
Вот собственно и пишу реализацию.
...
Рейтинг: 0 / 0
Компиляция MEMO поля
    #35793894
Спасибо. Удалось ускорить процесс в 5 раз .))))
...
Рейтинг: 0 / 0
Компиляция MEMO поля
    #35794662
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пожалуйста
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Компиляция MEMO поля
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]