Скорость проведения тестов, 4.2.2.2
Atom Ответить
17.01.2014


Господа! Камрады!

Сейчас мигрировал на версию библиотеки 4.2.2.2. Внёс правки, касаемые кода (кстати, в хелпе неплохо бы поменять trader на connector в примерах тестов, но не суть). Так, вот, код, работавший в 4.1.19.1 примерно 10-15 минут на 1 день тестов сейчас стал работать ну очень долго. Особых "новшеств" от себя не вносил - лишь такие:

Код

                            trader.RegisterMarketDepth(new TrendMarketDepthGenerator(trader.GetSecurityId(security))
                            {
                                Interval = TimeSpan.FromMilliseconds(1),
                                MaxAsksDepth = 10,
                                MaxBidsDepth = 10,
                                UseTradeVolume = true,
                                MaxVolume = 10,
                                MinSpreadStepCount = 1,
                                MaxSpreadStepCount = 1,
                            });


Код

                            var trader = new HistoryEmulationConnector(new[] { security }, new[] { portfolio })
                            {
                               StorageRegistry = storageRegistry,

                                MarketEmulator =
                                {
                                    Settings = { UseMarketDepth = true, SyncDepthToTrades = true, FillOnTouch = true, }
                                }
                            };



Код

((MessageAdapter)trader.MarketDataAdapter).MarketTimeChangedInterval = TimeSpan.FromMilliseconds(1);


Подскажите, плз, 2 вещи.
1. Я один такой неудачник или же у всех скорость снизилась?
2. В чём сакральный смысл параметров Interval и MarketTimeChangedInterval?

Да, ещё памяти стало приложение кушать раз в 5-6 больше так. В какую сторону копать?

Заранее спасибо!



Спасибо:




5 Ответов
AntonySS

Фотография
Курсы Автор статей
Дата: 17.01.2014
Ответить


Rebelion Перейти
Господа! Камрады!

Сейчас мигрировал на версию библиотеки 4.2.2.2. Внёс правки, касаемые кода (кстати, в хелпе неплохо бы поменять trader на connector в примерах тестов, но не суть). Так, вот, код, работавший в 4.1.19.1 примерно 10-15 минут на 1 день тестов сейчас стал работать ну очень долго. Особых "новшеств" от себя не вносил - лишь такие:

Код

                            trader.RegisterMarketDepth(new TrendMarketDepthGenerator(trader.GetSecurityId(security))
                            {
                                Interval = TimeSpan.FromMilliseconds(1),
                                MaxAsksDepth = 10,
                                MaxBidsDepth = 10,
                                UseTradeVolume = true,
                                MaxVolume = 10,
                                MinSpreadStepCount = 1,
                                MaxSpreadStepCount = 1,
                            });


Код

                            var trader = new HistoryEmulationConnector(new[] { security }, new[] { portfolio })
                            {
                               StorageRegistry = storageRegistry,

                                MarketEmulator =
                                {
                                    Settings = { UseMarketDepth = true, SyncDepthToTrades = true, FillOnTouch = true, }
                                }
                            };



Код

((MessageAdapter)trader.MarketDataAdapter).MarketTimeChangedInterval = TimeSpan.FromMilliseconds(1);


Подскажите, плз, 2 вещи.
1. Я один такой неудачник или же у всех скорость снизилась?
2. В чём сакральный смысл параметров Interval и MarketTimeChangedInterval?

Да, ещё памяти стало приложение кушать раз в 5-6 больше так. В какую сторону копать?

Заранее спасибо!


Добрый вечер!

Нет, Вы не один такой

Также заметил снижение скорости тестирования и после Вашего поста решил провести сравнительный тест.

Запустил SampleHistoryTestingParallel версий 4.2.2.2 и 4.1.19.1 с тестированием на исторических данных идущих в комплекте с API.

Результаты получил следующие:
API 4.1.19.1 - тестирование заняло примерно 3мин, объем потребляемой памяти на конец теста - 1872Мб
API 4.2.2.2 - тестирование заняло примерно 13мин 30сек, объем потребляемой памяти на конец теста - 1760Мб

На счет сакрального смысла Interval и MarketTimeChangedInterval, то это думаю лучше к разработчикамSmile
Но как я понимаю, эти параметры эмулируют частоту обновления/поступления биржевых данных
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 17.01.2014
Ответить


AntonySS Перейти

Результаты получил следующие:
API 4.1.19.1 - тестирование заняло примерно 3мин, объем потребляемой памяти на конец теста - 1872Мб
API 4.2.2.2 - тестирование заняло примерно 13мин 30сек, объем потребляемой памяти на конец теста - 1760Мб


В следующей версии будет чуть исправлена ситуация со скоростью. Трассировщик показал, что самый медленный участок в примере - это генерация свечек. Как раз то, что не менялось пока вообще. Так что я не уверен насчет корректности замеров. Какие параметры были выставлены при тестировании?
Спасибо:

AntonySS

Фотография
Курсы Автор статей
Дата: 18.01.2014
Ответить


Михаил Сухов Перейти
AntonySS Перейти

Результаты получил следующие:
API 4.1.19.1 - тестирование заняло примерно 3мин, объем потребляемой памяти на конец теста - 1872Мб
API 4.2.2.2 - тестирование заняло примерно 13мин 30сек, объем потребляемой памяти на конец теста - 1760Мб


В следующей версии будет чуть исправлена ситуация со скоростью. Трассировщик показал, что самый медленный участок в примере - это генерация свечек. Как раз то, что не менялось пока вообще. Так что я не уверен насчет корректности замеров. Какие параметры были выставлены при тестировании?


Михаил,

Тестировал я на оригинальных SampleHistoryTestingParallel версий 4.1.19.1 и 4.2.2.2 с использованием оригинальных параметров, которые, насколько я могу судить, в обоих примерах идентичны.
Сегодня повторил тесты и получил схожие результаты:
API 4.1.19.1 - тестирование заняло примерно 3мин, объем потребляемой памяти на конец теста - 1832Мб
API 4.2.2.2 - тестирование заняло примерно 13мин 20сек, объем потребляемой памяти на конец теста - 1590Мб

Длительность тестов я брал из окошка, которое появляется когда тест окончен
Код
MessageBox.Show("Закончено за " + (DateTime.Now - _startEmulationTime))
, а объем потребляемой памяти из "Диспетчера задач"

Аналогичный тест для оригинальных SampleHistoryTesting с оригинальными параметрами, сразу на Тиках, Тиках + Стаканах, Свечах, Свечах + Стаканах дал следующие результаты:
API 4.1.19.1 - Потребление памяти 650Мб
Тики - 3мин 20сек
Тики+Стаканы - 7мин 45сек
Свечи - 10сек
Свечи+Стаканы - 10сек

API 4.2.2.2 - Потребление памяти 2890Мб
Тики - 12мин 20сек
Тики+Стаканы - 29мин 0сек
Свечи - 12мин 10сек
Свечи+Стаканы - 12мин 45сек

Возможно Samlpes в двух версиях все же разнятся где-то в настройках, чего я не заметил, но тем не менее протестированы оригинальные Samples без внесения собственного кода.
Спасибо:

Bond

Фотография
Курсы
Дата: 18.01.2014
Ответить


Михаил Сухов Перейти
AntonySS Перейти

Результаты получил следующие:
API 4.1.19.1 - тестирование заняло примерно 3мин, объем потребляемой памяти на конец теста - 1872Мб
API 4.2.2.2 - тестирование заняло примерно 13мин 30сек, объем потребляемой памяти на конец теста - 1760Мб


В следующей версии будет чуть исправлена ситуация со скоростью. Трассировщик показал, что самый медленный участок в примере - это генерация свечек. Как раз то, что не менялось пока вообще. Так что я не уверен насчет корректности замеров. Какие параметры были выставлены при тестировании?


Михаил, если есть возможность хоть как-то ускорить тестирование, пожалуйста, используйте ее.
Спасибо:

Aleksey24

Фотография
Дата: 09.02.2014
Ответить


Попробуйте проверить кончилась ли лицензия, если да то обновите. Мне помогло.
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy