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

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


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

Tags:


Thanks:


1 2 3  > >>
Mikhail Sukhov

Avatar
Date: 7/11/2014
Reply


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


Код сравнения.
Thanks:

vk37

Avatar
Date: 7/11/2014
Reply


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

Thanks:

Mikhail Sukhov

Avatar
Date: 7/11/2014
Reply


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


Жду
Thanks:

devruss

Avatar
Date: 7/11/2014
Reply


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


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

vk37

Avatar
Date: 7/11/2014
Reply


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


Жду
Стаканы из хранилища не поднимаются вообще: System.OutOfMemoryException. Маркет данные прилагаю к посту.
Code
   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()


Code
    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);
        }
    }
Thanks:

Mikhail Sukhov

Avatar
Date: 7/11/2014
Reply


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


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

vk37

Avatar
Date: 7/11/2014
Reply


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


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

Thanks:

vk37

Avatar
Date: 7/11/2014
Reply


Потеря в скорости идет при подгрузке стаканов.
Code
    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 раза.
Thanks:

Mikhail Sukhov

Avatar
Date: 7/11/2014
Reply


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


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



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

vk37

Avatar
Date: 7/11/2014
Reply


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

Thanks:
1 2 3  > >>

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy