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

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

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

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

попробуем оптимизировать
...
Рейтинг: 0 / 0
03.02.2009, 10:51
    #35793135
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция MEMO поля
вот пример оптимизации, нужно было уйти от 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
03.02.2009, 10:59
    #35793176
Компиляция MEMO поля
Вот сам пытаюсь это реализовать, только что делать, если у меня возврат из функции есть?
...
Рейтинг: 0 / 0
03.02.2009, 11:06
    #35793198
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция MEMO поля
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
03.02.2009, 11:09
    #35793204
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция MEMO поля
при наличии доп.поля - храните компил.код рядом
и в темп.каталог вытаскивайте именно компил.код, тогда потребность
в компил.отпадает,
перекомп. нужно будет делать только в случае неактуальности
(если в основной скрипт внесли изменения)

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


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