← Zurück

Быстродействие

Добрый день. Хочу разобраться по теме быстродействия. Записал логи прохождения пары заявок, вот одна из них:

15:09:39.739 [Sending New Order] SRZ1 Buy Price: 0 Qty: 1 Thread: null 15:09:39.764 [Sending New Order] SRZ1 quikOrderID:0 Thread: null 15:09:40.009 [parse_order] 5584936686 54501178 Thread: null 15:09:40.011 [_trader_OrdersChanged] 5584936686 order status Active Thread: null 15:09:40.024 [_trader_OrdersChanged] 5584936686 order Accepted Accepted Thread: null 15:09:40.109 Thread: EventDispatcher thread #мои сделки 15:09:40.112 Thread: EventDispatcher thread #заявки 15:09:40.120 [parse_order] 5584936686 54501178 Thread: EventDispatcher thread #заявки 15:09:40.124 [_trader_OrdersChanged] 5584936686 order status Done Thread: EventDispatcher thread #заявки 15:09:40.126 [_trader_OrdersChanged] 5584936686 order Filled Accepted Thread: EventDispatcher thread #заявки 15:09:40.132 [_trader_NewMyTrades] 5584936686 8412 1 Thread: EventDispatcher thread #мои сделки 15:09:40.154 Thread: EventDispatcher thread #заявки 15:09:40.157 [parse_order] 5584936686 54501178 Thread: EventDispatcher thread #заявки 15:09:40.159 [_trader_OrdersChanged] 5584936686 order status Done Thread: EventDispatcher thread #заявки 15:09:40.161 [_trader_OrdersChanged] 5584936686 order Filled Accepted Thread: EventDispatcher thread #заявки 15:09:40.165 Thread: EventDispatcher thread #заявки 15:09:40.169 [parse_order] 5584936686 54501178 Thread: EventDispatcher thread #заявки 15:09:40.171 [_trader_OrdersChanged] 5584936686 order status Done Thread: EventDispatcher thread #заявки 15:09:40.174 [_trader_OrdersChanged] 5584936686 order Filled Accepted Thread: EventDispatcher thread #заявки Кусок кода метода парсинга ордера: <mark>Console.WriteLine(DateTime.Now.ToString(timefmt) + " [parse_order] " + order.Id + " " + order.TransactionId + ThreadName); switch (order.Status) { case StockSharp.BusinessEntities.OrderStatus.Accepted: { switch (order.State) { case OrderStates.Active: { Console.WriteLine(DateTime.Now.ToString(timefmt) + " " + "[_trader_OrdersChanged] "+order.Id+" order status Active"+ThreadName); .... ....</mark> Вопрос - почему так долго выполняется код между [parse_order] и [_trader_OrdersChanged] ? Когда событие происходит в основном потоке(name = null), понятно что там может мешать что угодно. Но когда событие идет в потоке #заявки, там нечему мешать.

War dieses Thema hilfreich?

Thema teilen

Kommentare (2)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Alexander
Alexander

конкатенация строк занимает как раз эти 2мс которые проходят попробуйте Stringbuilder

skuvv
skuvv Autor

Alexander Mukhanchikov: конкатенация строк занимает как раз эти 2мс которые проходят попробуйте Stringbuilder сделал тест на конкатенацию строки: <mark> DateTime start = DateTime.Now; string timefmt = "HH:mm:ss.fff"; int id = 100500; int tdId = 123123; string name = "name"; for (int i = 0; i < 1000000; i++) { string str = ""; str += DateTime.Now.ToString(timefmt) + " [parse_order] " + id + " " + tdId + name;

        }
        DateTime end = DateTime.Now;
        Console.WriteLine( (end-start).TotalMilliseconds);
        Console.ReadLine();</mark>

Результат в районе 2200мс = 0.0022мс на 1 строку, основное время при этом тратится на DateTime.Now.ToString(timefmt) около 70% Задержки явно не в приведенном выше коде. Очень хочется разобраться...