public void ProcessResult(ProfilerItem sqlProfileItem) { var serializer = new DataContractJsonSerializer(typeof(ProfilerItem)); lock(_syncRoot) { if (_fileStream.Position > 1) { _streamWriter.Write(","); _streamWriter.Flush(); } serializer.WriteObject(_fileStream, sqlProfileItem); long position = _fileStream.Position; _streamWriter.Write("]"); _streamWriter.Flush(); _fileStream.Position = position; } }
protected void ProcessResult(ProfilerItem sqlProfileItem) { ProfilingResults.Add(sqlProfileItem); }
public override void Update() { var debugInfo = Target.Code.DebugInfo; _start.Caption = _profiling ? "Stop" : "Start"; _message.Visible = debugInfo == null; if (Target == null || !_window.Visible || debugInfo == null || Target.Paused || !_profiling) return; // TODO: this needs to be based on TimeScale or something... _totalSamples++; var symbol = debugInfo.FindSymbol(Target.Vm.IP); if (!symbol.HasValue) return; var function = symbol.Value.Name.Split('.')[0]; ProfilerItem item; if (_items.TryGetValue(function, out item)) { item.Samples++; } else { item = new ProfilerItem(function); _items.Add(function, item); _profilerView.Items.Add(item); } }