API 4.2.4.0. Скорость чтения SecurityChange из хранилища


API 4.2.4.0. Скорость чтения SecurityChange из хранилища
Atom
11.07.2014


Стала медленнее примерно в 6 раз.

Теги:


Спасибо:


1 2 3  > >>
Mikhail Sukhov

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


vk37 Перейти
Стала медленнее примерно в 6 раз.


Код сравнения.
Спасибо:

vk37

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


Михаил Сухов Перейти
Код сравнения.
Специально код для тестирования не составлял. Та часть кода в моем проекте, которая обращается за данными к хранилищу стала работать на 4.2.4.0 медленнее примерно в 10 раз по сравнению с версией 4.2.3.13. Если в своем проекте меняю ссылки на сборки S# обратно на 4.2.3.13, то снова все работает быстро. Проверил отдельно тот код, что обращается к хранилищу изменений инструментов. Он у меня стал медленнее примерно в 6 раз. Изменилась ли скорость при обращении к данным по сделкам и стаканам не проверял.

Спасибо:

Mikhail Sukhov

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


vk37 Перейти
Специально код для тестирования не составлял.


Жду
Спасибо:

devruss

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


vk37 Перейти
Стала медленнее примерно в 6 раз.


медленнее, это еще ладно. Я помню, когда сравнивал раличные версии у меня результаты бэктестинга менялись в зависимости от версии сборки (незначительно, но отличались... где-то была моя тема по этому поводу)
Спасибо:

vk37

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


Михаил Сухов Перейти
vk37 Перейти
Специально код для тестирования не составлял.


Жду
Стаканы из хранилища не поднимаются вообще: System.OutOfMemoryException. Маркет данные прилагаю к посту.
Код
   at System.Collections.Generic.Dictionary`2.Resize(Int32 newSize, Boolean forceNewHashCodes)
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
   at System.Linq.Enumerable.ToDictionary[TSource,TKey](IEnumerable`1 source, Func`2 keySelector)
   at StockSharp.Algo.TraderHelper.AddDelta(IEnumerable`1 fromQuotes, IEnumerable`1 deltaQuotes, Boolean isBids)
   at StockSharp.Algo.TraderHelper.AddDelta(QuoteChangeMessage from, QuoteChangeMessage delta)
   at #=qg_pNPqyCfZ23Tsz5texp8IXAe20oTShauQEzqbSZdOLMzskfDFEjN5YOe1TAca2E.#=qTfrirbxZYSVL1_aNwCbGng==(#=qS9YsZNAzZplF7inzo2AHNQIY6nN53R0u8selb3ok2zM= #=qbAvmi_8MHDD719jHz0_5Ag==)
   at #=q7E10EcbcImBPppdVAfcBTQvXlTgE5vwOEWPu1BUQ3zrBWNFtZaSgoDx1pVa8BkOxnkHykysoo4EjbPJoTm7TGQ==.#=qS9YsZNAzZplF7inzo2AHNQIY6nN53R0u8selb3ok2zM=.MoveNext()
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at StorageLoadDemo.Program.Main(String[] args) in d:\1\StorageLoadDemo\Program.cs:line 20
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()


Код
    using System.Linq;
    using StockSharp.Algo.Storages;
    using StockSharp.BusinessEntities;
    using System;
    using System.IO;

    class Program
    {
        static void Main(string[] args)
        {
            var storageRegistry = new StorageRegistry();
            var defaultDrive = (LocalMarketDataDrive)storageRegistry.DefaultDrive;
            defaultDrive.Path = Path.GetFullPath(@"D:\AlgoTrading\MarketData\Storage\PlazaForts");
            var security = new Security() {Id = "RIU4@FORTS"};
            var marketDepthStorage = storageRegistry.GetMarketDepthStorage(security, defaultDrive);
            var date = new DateTime(2014, 7, 10);
            var start = DateTime.Now;
            marketDepthStorage.Load(date).ToArray();
            Console.WriteLine("Время на исполнение: {0}", DateTime.Now - start);
        }
    }
Спасибо:

Mikhail Sukhov

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


vk37 Перейти
Стаканы из хранилища не поднимаются вообще: System.OutOfMemoryException


Код написан криво. Пишите нормально - ошибок не будет.
Спасибо:

vk37

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


Михаил Сухов Перейти
vk37 Перейти
Стаканы из хранилища не поднимаются вообще: System.OutOfMemoryException


Код написан криво. Пишите нормально - ошибок не будет.
Очень информативно.

Спасибо:

vk37

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


Потеря в скорости идет при подгрузке стаканов.
Код
    using StockSharp.Algo.Storages;
    using StockSharp.BusinessEntities;
    using System;
    using System.IO;

    class Program
    {
        static void Main(string[] args)
        {
            var storageRegistry = new StorageRegistry();
            var defaultDrive = (LocalMarketDataDrive)storageRegistry.DefaultDrive;
            defaultDrive.Path = Path.GetFullPath(@"D:\AlgoTrading\MarketData\Storage\PlazaForts");
            var security = new Security() { Id = "RIU4@FORTS" };
            var securityChangeStorage = storageRegistry.GetSecurityChangeStorage(security, defaultDrive);
            var tradeStorage = storageRegistry.GetTradeStorage(security, defaultDrive);
            var marketDepthStorage = storageRegistry.GetMarketDepthStorage(security, defaultDrive);
            var date = new DateTime(2014, 07, 9);
            var start = DateTime.Now;
            foreach (var sc in securityChangeStorage.Load(date)) { }
            foreach (var trade in tradeStorage.Load(date)) { }
            foreach (var depth in marketDepthStorage.Load(date)) { }
            Console.WriteLine("Время на исполнение: {0}", DateTime.Now - start);
        }
    }

4.2.3.13: Время на исполнение: 00:00:01.0192103
4.2.4.0 : Время на исполнение: 00:00:32.7287738

Итого медленнее в 32 раза.
Спасибо:

Mikhail Sukhov

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


vk37 Перейти
Михаил Сухов Перейти
vk37 Перейти
Стаканы из хранилища не поднимаются вообще: System.OutOfMemoryException


Код написан криво. Пишите нормально - ошибок не будет.
Очень информативно.



ToArray - смысл понятен этой функции?
Спасибо:

vk37

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


Михаил Сухов Перейти
ToArray - смысл понятен этой функции?
Смысл понятен. На версии 4.2.3.13 этот код работает без проблем:
Код
marketDepthStorage.Load(date).ToArray();

Спасибо:
1 2 3  > >>

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

loading
clippy