Проблемы с рекурсией
Здравствуйте, господа!!!
Ситуация следующая. Есть многозвенная система, где вся прикладнуха написана на VBScript. Сейчас используется MS HostScript.
Система работает нестабильно и периодически вываливаются сообщения типа Нехватает памяти. Опыты показали, что при рекурсивном вызове процедуры всё сваливается на 573 вызове. Причём эта цифра может колебаться от 500 до чуть более 100. От чего зависить - пока не очень понимаю.
Провёл эксперимент. Внутри Word вызов проходит около 5000 раз. Хотя при других выриантах уже около 3000 раз вдавал.
Провёл аналогичный эксперимент с FastScript.
Стабильно сваливается всё приложение на 2500 каком то вызове. Для совместимости использовал тоже VB.
Была идея сменить енжайн MS на FastScript - но теперь даже не знаю что далать. От чего зависит глубина вызовов? Как можно ею управлять или контроллировать?
Авторы могут прокомментировать даннуую ситуацию?
Привожу текст скрипта, выполняемого в ДЕМО FastScript 1.8
dim f, b, m
function TestCall(i)
I=I+1
m.Lines.Text=i
if i<3000 then
i=TestCall(I)
end if
end function
sub ButtonClick(Sender)
TestCall(1)
end sub
f = new TForm(nil)
f.Caption = "Test it!"
f.BorderStyle = bsDialog
f.Position = poScreenCenter
b = new TButton(f)
b.Name = "Button1"
b.Parent = f
b.SetBounds(10, 10, 75, 25)
b.Caption = "Test"
m = new TMemo(f)
m.Name = "Memo1"
m.Parent = f
m.SetBounds(10, 50, 200, 200)
b.OnClick = AddressOf ButtonClick
f.ShowModal
delete f
Ситуация следующая. Есть многозвенная система, где вся прикладнуха написана на VBScript. Сейчас используется MS HostScript.
Система работает нестабильно и периодически вываливаются сообщения типа Нехватает памяти. Опыты показали, что при рекурсивном вызове процедуры всё сваливается на 573 вызове. Причём эта цифра может колебаться от 500 до чуть более 100. От чего зависить - пока не очень понимаю.
Провёл эксперимент. Внутри Word вызов проходит около 5000 раз. Хотя при других выриантах уже около 3000 раз вдавал.
Провёл аналогичный эксперимент с FastScript.
Стабильно сваливается всё приложение на 2500 каком то вызове. Для совместимости использовал тоже VB.
Была идея сменить енжайн MS на FastScript - но теперь даже не знаю что далать. От чего зависит глубина вызовов? Как можно ею управлять или контроллировать?
Авторы могут прокомментировать даннуую ситуацию?
Привожу текст скрипта, выполняемого в ДЕМО FastScript 1.8
dim f, b, m
function TestCall(i)
I=I+1
m.Lines.Text=i
if i<3000 then
i=TestCall(I)
end if
end function
sub ButtonClick(Sender)
TestCall(1)
end sub
f = new TForm(nil)
f.Caption = "Test it!"
f.BorderStyle = bsDialog
f.Position = poScreenCenter
b = new TButton(f)
b.Name = "Button1"
b.Parent = f
b.SetBounds(10, 10, 75, 25)
b.Caption = "Test"
m = new TMemo(f)
m.Name = "Memo1"
m.Parent = f
m.SetBounds(10, 50, 200, 200)
b.OnClick = AddressOf ButtonClick
f.ShowModal
delete f
Комментарии