/// <summary> /// Add markers to annotate the threads graph with our thread names. /// </summary> public static void AddThreadName() { if (string.IsNullOrEmpty(Thread.CurrentThread.Name)) { return; } MarkerSeries flagSeries = Markers.DefaultWriter.CreateMarkerSeries(Thread.CurrentThread.Name); flagSeries.WriteFlag(Thread.CurrentThread.Name); }
internal static void Visualize <TSource>( this ParallelQuery <TSource> source, Action <TSource> action, string span = Parallel, int category = 1) { using (Markers.EnterSpan(category, span)) { MarkerSeries markerSeries = Markers.CreateMarkerSeries(span); source.ForAll(value => { using (markerSeries.EnterSpan(Thread.CurrentThread.ManagedThreadId, value.ToString())) { action(value); } }); } }
internal static void Visualize <TSource>( this IEnumerable <TSource> source, Action <TSource> action, string span = Sequential, int category = 0) { using (Markers.EnterSpan(category, span)) { MarkerSeries markerSeries = Markers.CreateMarkerSeries(span); source.ForEach(value => { using (markerSeries.EnterSpan(Thread.CurrentThread.ManagedThreadId, value.ToString())) { action(value); } }); } }
internal static void Visualize <TSource>( this ParallelQuery <TSource> source, Action <ParallelQuery <TSource>, Action <TSource> > query, Action <TSource> iteratee, string span = ParallelSpan, int category = -2) { using (Markers.EnterSpan(category, span)) { MarkerSeries markerSeries = Markers.CreateMarkerSeries(span); query( source, value => { using (markerSeries.EnterSpan(Thread.CurrentThread.ManagedThreadId, value.ToString())) { iteratee(value); } }); } }
internal static TResult Visualize <TSource, TMiddle, TResult>( this ParallelQuery <TSource> source, Func <ParallelQuery <TSource>, Func <TSource, TMiddle>, TResult> query, Func <TSource, TMiddle> iteratee, Func <TSource, string> spanFactory = null, string span = ParallelSpan) { spanFactory = spanFactory ?? (value => value.ToString()); MarkerSeries markerSeries = Markers.CreateMarkerSeries(span); return(query( source, value => { using (markerSeries.EnterSpan( Thread.CurrentThread.ManagedThreadId, spanFactory(value))) { return iteratee(value); } })); }