Быстродействие
Atom
25.10.2011
skuvv


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

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 #заявки Кусок кода метода парсинга ордера: 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); .... .... Вопрос - почему так долго выполняется код между [parse_order] и [_trader_OrdersChanged] ? Когда событие происходит в основном потоке(name = null), понятно что там может мешать что угодно. Но когда событие идет в потоке #заявки, там нечему мешать.


Теги:


Спасибо:


Alexander

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


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

Спасибо:

skuvv

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


Alexander Mukhanchikov: конкатенация строк занимает как раз эти 2мс которые проходят попробуйте Stringbuilder сделал тест на конкатенацию строки: 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% Задержки явно не в приведенном выше коде. Очень хочется разобраться...

Спасибо:


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

loading
clippy