public async Task StreamWinderPerformanceTest() { var source = new CancellationTokenSource(); var testStream = new InfiniteStream(TweetSamples.GetBinalyStreamSamples(), source.Token); var handler = new PseudoStreamHandler(); var received = 0; source.CancelAfter(TimeSpan.FromSeconds(10)); var receiveTask = StreamWinder.Run(testStream, content => { UserStreamParser.ParseStreamLine(content, handler); received++; }, Timeout.InfiniteTimeSpan, source.Token); try { await receiveTask; } catch (OperationCanceledException) { // this is expected. } System.Diagnostics.Debug.WriteLine(received); // i promise myself the cadena engine can handle > 10K events per second. Debug.WriteLine("received: {0}", received); Debug.WriteLine("handler: statuses: {0} / events: {1}", handler.ReceivedStatuses, handler.ReceivedEvents); // Assert.IsTrue(received > 10000 * 10); }
public void MeteorJsonPerformanceTest() { var cs = ""; for (int i = 0; i < LoopCount; i++) { foreach (var elements in TweetSamples.GetStreamSampleElements()) { var parsed = MeteorJson.Parse(elements); if (parsed.ContainsKey("text") && parsed.ContainsKey("user") && parsed["user"].ContainsKey("screen_name")) { cs = "@" + parsed["user"]["screen_name"].AsString() + ": " + parsed["text"].AsString(); } } } // Trace.WriteLine(cs); }
public void MeteorJsonDecodeTest() { try { foreach (var elements in TweetSamples.GetStreamSampleElements()) { // Trace.WriteLine(MeteorJson.Parse(elements).ToString()); Debug.WriteLine("{0}", MeteorJson.Parse(elements).ToString()); Debug.WriteLine("{0}", SafeMeteorJson.Parse(elements).ToString()); } } catch (JsonParseException ex) { Debug.WriteLine(ex.ToString()); throw; } }
public void MeteorJsonStreamPerformanceTest() { var cs = ""; for (int i = 0; i < LoopCount; i++) { foreach (var elements in TweetSamples.GetStreamSampleElements()) { var memstream = new MemoryStream(Encoding.UTF8.GetBytes(elements)); var reader = new JsonStreamParser(memstream); var parsed = reader.Parse(); if (parsed.ContainsKey("text") && parsed.ContainsKey("user") && parsed["user"].ContainsKey("screen_name")) { cs = "@" + parsed["user"]["screen_name"].AsString() + ": " + parsed["text"].AsString(); } } } // Trace.WriteLine(cs); }
public void UserStreamParserPerformanceTest() { var workingset = Environment.WorkingSet; var parser = new JsonStringParser(); // pre-work for (var i = 0; i < 100; i++) { foreach (var elem in TweetSamples.GetStreamSampleElements()) { parser.Parse(elem); } } var source = new CancellationTokenSource(); var handler = new PseudoStreamHandler(); var received = 0; source.CancelAfter(TimeSpan.FromSeconds(10)); foreach (var content in TweetSamples.GetStreamSamples()) { if (source.IsCancellationRequested) { break; } received++; UserStreamParser.ParseStreamLine(parser, content, handler); } var wsa = Environment.WorkingSet; TestContext.WriteLine("received: {0}", received); TestContext.WriteLine("handler: statuses: {0} / events: {1}", handler.ReceivedStatuses, handler.ReceivedEvents); TestContext.WriteLine("cache: {0} / {1}", parser.CacheCount(), parser.ALQCount()); TestContext.WriteLine("workingset delta: {0}", wsa - workingset); }