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


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


Скорость загрузки стаканов из хранилища стала существенно медленнее на новой версии.

4.2.3.13: Время на исполнение: 00:00:01.0192103
4.2.4.0 : Время на исполнение: 00:00:32.7287738
Код
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, 07, 9);
        var start = DateTime.Now;
        foreach (var depth in marketDepthStorage.Load(date)) { }
        Console.WriteLine("Время на исполнение: {0}", DateTime.Now - start);
    }
}

Итого медленнее в 32 раза.

Теги:


Спасибо:


vk37

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


Версия 4.2.6. Стаканы стали читаться быстрее, но медленнее чем на 4.2.3.13 примерно в 3-4 раза. Тестировал так:
Код
namespace StorageLoadDemo
{
    using StockSharp.Algo.Storages;
    using StockSharp.BusinessEntities;
    using System;
    using System.Collections.Generic;
    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 date = new DateTime(2014, 7, 1);
            var start = DateTime.Now;
            var log = new List<string>();

            while (true)
            {
                var security = new Security() { Id = "RIU4@FORTS" };
                var storage = storageRegistry.GetQuoteMessageStorage(security, defaultDrive);
                var loadStart = DateTime.Now;
                foreach (var item in storage.Load(date)) { }
                var logLine = string.Format("{0:d} - {1:0.0} ms", date, (DateTime.Now - loadStart).TotalMilliseconds);
                Console.WriteLine(logLine);
                log.Add(logLine);

                date = date.AddDays(1);

                if (date > DateTime.Today)
                    break;
            }

            var summary = string.Format("Время на исполнение: {0}", DateTime.Now - start);
            Console.WriteLine(summary);
            log.Add(summary);
            File.WriteAllLines("Log.txt", log);
        }
    }
}

4.2.3.13: Время на исполнение: 00:00:06.3452430
4.2.6.0 : Время на исполнение: 00:00:21.9514286
Спасибо:

Mikhail Sukhov

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


vk37 Перейти
Версия 4.2.6. Стаканы стали читаться быстрее, но медленнее чем на 4.2.3.13 примерно в 3-4 раза.


Странно, что вообще что-то изменилось.[biggrin]

Я забыл отписаться. Ускорение возможно только на новой версии файла. Тоесть старые стакану нужно перегнать в новый формат стандартными API способом.
Спасибо:

vk37

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


Михаил Сухов Перейти
vk37 Перейти
Версия 4.2.6. Стаканы стали читаться быстрее, но медленнее чем на 4.2.3.13 примерно в 3-4 раза.


Странно, что вообще что-то изменилось.[biggrin]

Я забыл отписаться. Ускорение возможно только на новой версии файла. Тоесть старые стакану нужно перегнать в новый формат стандартными API способом.
Пришел к выводу, что понимания как работать с текущим вариантом API хранилища у меня нет.

Спасибо:

Mikhail Sukhov

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


vk37 Перейти
Пришел к выводу, что понимания как работать с текущим вариантом API хранилища у меня нет.


Как написано в документации. Ничего не изменилось.
Спасибо:

vk37

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


Михаил Сухов Перейти
vk37 Перейти
Пришел к выводу, что понимания как работать с текущим вариантом API хранилища у меня нет.


Как написано в документации. Ничего не изменилось.


Для конвертации использовать QuoteMessageStorage или MarketDepthStorage?
Спасибо:

Mikhail Sukhov

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


vk37 Перейти
Михаил Сухов Перейти
vk37 Перейти
Пришел к выводу, что понимания как работать с текущим вариантом API хранилища у меня нет.


Как написано в документации. Ничего не изменилось.


Для конвертации использовать QuoteMessageStorage или MarketDepthStorage?


Без разницы. Влият только на скорость операций. Message быстрее, чем бизнес-объект. А формат один.
Спасибо:

vk37

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


Михаил Сухов Перейти
Без разницы. Влият только на скорость операций. Message быстрее, чем бизнес-объект. А формат один.
У меня QuoteMessageStorage и MarketDepthStorage возвращают различное количество стаканов при загрузке на версии 4.2.6. Наверное нужно решить эту проблему перед конвертацией стаканов хранилища.

Спасибо:

Mikhail Sukhov

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


vk37 Перейти
Михаил Сухов Перейти
Без разницы. Влият только на скорость операций. Message быстрее, чем бизнес-объект. А формат один.
У меня QuoteMessageStorage и MarketDepthStorage возвращают различное количество стаканов при загрузке на версии 4.2.6. Наверное нужно решить эту проблему перед конвертацией стаканов хранилища.



More
Спасибо:


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

loading
clippy