Сильный тормоз тестера при автоматическом запуске терминала как процесса

 
Заметил удручающую разницу по времени отработки тестирования эксперта при ручном запуске терминала и тестера (быстро), и автоматическом запуске (очень медленно) терминала как процесса из внешней системы дотестирования.
Эксперт при этом не менял, не перекомпилировал, никаких изменений. В начале думал, что влияют смена валюты, timeframe и т.д. - оказалось, нет. С теми же параметрами тест эксперта ручным способом идёт (закачана вся история котировок из history центра, модель самая точная, все тики) за нормальное время, и та же конфигурация: те же параметры, время, валюта, параметры эксперта и т.д. при автоматическом запуске даже месяц тестирования идёт невероятно долго, прямо ползёт по часам и дням.

Просьба к разработчикам протестировать терминал на этот предмет.
Терминал запускается из внешней системы с таким config .ini файлом (даты, валюта и график меняются при запусках):
TestExpert=chv_exp_AllConditionsManyTimes_v03
TestExpertParameters=MT4NetTester.set
TestSymbol=GBPUSD
TestPeriod=M5
TestModel=0
TestRecalculate=true
TestOptimization=false
TestDateEnable=true
TestFromDate=2005.02.11
TestToDate=2005.05.27
TestShutdownTerminal=true
Таким способом:
            using (System.IO.StreamWriter sw = new
                System.IO.StreamWriter(sIniFileName, false))
            {
                sw.WriteLine(string.Format("TestExpert={0}", m_TestConfig.ExpertName));
                sw.WriteLine(string.Format("TestExpertParameters={0}", shortSetFileName));
                sw.WriteLine(string.Format("TestSymbol={0}", m_TestConfig.Symbol));
                sw.WriteLine(string.Format("TestPeriod={0}", testPeriod.Period(m_TestConfig.TimeFrame)));
                sw.WriteLine("TestModel=0");
                sw.WriteLine("TestRecalculate=true");
                sw.WriteLine("TestOptimization=false");
                sw.WriteLine("TestDateEnable=true");
                sw.WriteLine(string.Format("TestFromDate={0}", testDate1.ToString("yyyy.MM.dd")));
                sw.WriteLine(string.Format("TestToDate={0}", testDate2.ToString("yyyy.MM.dd")));
                sw.WriteLine("TestShutdownTerminal=true");
            }
 
            // 11.    Запустить терминал с параметром-именем уникального .ini файла в папке "D:Program FilesFIBO Group".
            string arguments = shortIniFileName;
            
            // arg: создать файл .ini в корне папки D:Program FilesFIBO Group
            //ProcessStartInfo inf;
            Process m_mt4 = Process.Start(sTerminal, arguments);
            --m_OutOfSample_TestCounter;
            addToLog("Пуск терминала: " + sTerminal);
Система собирает файлы в SQL базу данных для дальнейшего анализа, но сейчас трудно даже на хорошей машине с 1 Гб RAM и x64 процессором дождаться результатов запусков тестера из-за этой проблемы. Прошу уважаемых разработчиков обратить на неё внимание.

 
Обязательно проверим в понедельник.
 
Спасибо. Если смогу выявить в этом вопросе какие-то зависимости, обязательно в этот топик напишу.
 

Заметил прямо чётко бросившуюся в глаза зависимость (спасибо, кто-то подсказал на форуме раньше) - если открыть терминал и перед тестированием нажать кнопку Изменить эксперта и перекомпилировать его, затем закрыть редактор и запустить тестер с этим уже выбранным экспертом и прочими условиями, то он в тестере просто летает, даже на M5 графике с массой условий на разных таймфреймах в эксперте тестирование идёт с невероятной скоростью.
Если же закрыть терминал, и запустить заново, не меняя ничего, этот же тест идёт в разы или на порядки медленнее.

Конечно, для автотестирования выход наверное есть, можно перед запуском процесса терминала запускать процесс компилятора эксперта (usage: metalang [ options... ] filename), и по его завершению терминал. Проверю сегодня, если это поможет, то и отлично.
Билд терминала последний, b202 от 06.02.2007.

 
А что происходит, когда просто из командной строки запустить терминал с тем же самым .ini файлом?
Тоже также тормозит или работает быстро? Если работает быстро, то надо искать в направлении условий запуска процесса.

Кстати, сколько копий терминала одноврменно запускаете из своего стартера?
 
Я уезжал по делам...
Сейчас провёл эксперимент. Из FAR'a текущего каталога терминала запустил его командой: terminal.exe MT4NetTester.ini - результат тот же, с "тормозами". Т.е. ни одной сделки в закладке Результаты даже через полминуты не видно. Нажимаю кнопку Стоп, прерывая тестер, затем кнопку Изменить эксперта, ничего не меняю, жму на Компилировать и закрываю редактор. Теперь опять на кнопку Старт тестера - результат поразительный, секунд через 10 уже виду 284 записи в закладке Результаты - buy, sell, Modify, s/l, t/p и т.д.
Т.е. зависимость ярко видна.

Сейчас допишу старт процесса компилятора перед тестером, думаю, поможет.
Копия терминала с одной машины пока запускается на дотестирование одна. В будущем планирую, когда обновлюсь до 2 Гб RAM на неделе и X2 4800+ CPU, запускать 2-3 копии терминалов, но из разных папок, не из одной.
 
Да... компилирование выполнилось, но не помогло. Пробежало перед тестером console application окно компилятора, что-то про Token 4-5 записей успел разглядеть. Но в тестере тормоза остались. Приходится жать на Стоп, Изменить эксперта, компилировать и запускать тот же тест руками, тогда он скачет, как надо.
Но это уже не автоматическое тестирование... приходится жать на педаль.
Консольный компилятор из FAR'a отрабатывает успешно, эксперт-то рабочий, но, к сожалению, в скорости тестирования не помогает:
D:\...am Files\FIBO Group\tester\files>\chv_exp_AllConditionsManyTimes_v03.mq4"
MetaQuotes Language 4 compiler version 4.00 build 202 (06 Feb 2007)
Copyright 2001-2007, MetaQuotes Software Corp.
 
CollectTokens: 2048 MqlToken [624 Kb], used 48 MqlToken [size: 312 bytes]
CollectTokens: 2048 MqlToken [624 Kb], used 48 MqlToken [size: 312 bytes]
CollectTokens: 2048 MqlToken [624 Kb], used 1272 MqlToken [size: 312 bytes]
CollectTokens: 54425 MqlToken [16582 Kb], used 46053 MqlToken [size: 312 bytes]
Exp file "D:\Program Files\FIBO Group\experts\chv_exp_AllConditionsManyTimes_v03
.ex4" produced - 0 error(s), 0 warning(s)

Ренат, нужна помощь Вашей команды. Исправьте, пожалуйста, в терминале.
 
Нашёл на странице 'Голубая мечта.' такую фразу:
stringo 19.06.2006 17:13
SK. писал (а):
Кеш стирается только при изменении параметров тестирования или эксперта.

И что, записывается на винт?


Да. В директорий testercaches
---

Может, это связано как-то с этим кешем? И можно ли его самому очищать, не повредив стабильную работу терминала в целом?
 
chv, не могли бы Вы прислать Вашего эксперта на stringo AT metaquotes DOT ru для исследования проблемы? Конфиденциальность гарантирую.
 
stringo писал (а):
chv, не могли бы Вы прислать Вашего эксперта на stringo AT metaquotes DOT ru для исследования проблемы? Конфиденциальность гарантирую.
Честно, именно этого не могу, по причине того, что эксперт разрабатывался в содружестве с хорошим клиентом, а он, знаю, не любит выкладывать такие дела, а мне будет неприятно его подводить. У меня есть более старые модификации эксперта, такой версией могу поделиться, если Вас устроит. Сигналы там во многом те же, кроме самых новых.
 
ещё вопрос. А зачем установлен флаг пересчитывать последовательность?
TestRecalculate=true

Сделайте пересчёт только по первому запуску. Все остальные запуски пусть используют уже пересчитанную последовательность.

Здесь есть один нюанс - когда тестер использует уже готовую последовательность, он более экономен по памяти. Когда же тестер сначала формирует последовательность, а потом её тут же использует, тогда и возникают тормоза из-за первоначального большого распределения.

Я проверил на собственном примере. У меня времена отличаются в 2 раза.
Причина обращения: