Advertisement
Guest User

Untitled

a guest
Apr 12th, 2013
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.02 KB | None | 0 0
  1.         private static long getlag(List<MarketTrade> trades, double secondsPerTrade)
  2.         {
  3.             var from = trades.Min(t => t.TimestampUnix);
  4.             var to = trades.Max(t => t.TimestampUnix);
  5.             var queue = new Queue<MarketTrade>();
  6.             long worstLag = 0;
  7.             double nextTradeExecutableAt = from;
  8.             for (var now = from; now < to; now++)
  9.             {
  10.                 if (queue.Count == 0)
  11.                     nextTradeExecutableAt = now;
  12.                 // queue up new trades arriving this second
  13.                 queue.EnqueueRange(trades.Where(t => t.TimestampUnix == now));
  14.                 // execute some trades
  15.                 while (nextTradeExecutableAt < now + 1 && queue.Count > 0)
  16.                 {
  17.                     var trade = queue.Dequeue();
  18.                     worstLag = Math.Max(worstLag, now - trade.TimestampUnix);
  19.                     nextTradeExecutableAt += secondsPerTrade;
  20.                 }
  21.             }
  22.             return worstLag;
  23.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement