Browse Source

- Top 20 displays user code only

- Added functionality to expand selected hot paths
- fixed percentage of parent

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@4877 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Siegfried Pammer 16 years ago
parent
commit
c7a37f8443
  1. 9
      src/AddIns/Misc/Profiler/Controller/Data/CallTreeNode.cs
  2. 4
      src/AddIns/Misc/Profiler/Frontend/AddIn/Src/Views/ProfilerView.xaml
  3. 2
      src/AddIns/Misc/Profiler/Frontend/AddIn/Src/Views/ProfilerView.xaml.cs
  4. 11
      src/AddIns/Misc/Profiler/Frontend/Controls/CallTreeNodeViewModel.cs
  5. 3
      src/AddIns/Misc/Profiler/Frontend/Controls/QueryView.xaml
  6. 17
      src/AddIns/Misc/Profiler/Frontend/Controls/QueryView.xaml.cs

9
src/AddIns/Misc/Profiler/Controller/Data/CallTreeNode.cs

@ -60,6 +60,15 @@ namespace ICSharpCode.Profiler.Controller.Data @@ -60,6 +60,15 @@ namespace ICSharpCode.Profiler.Controller.Data
}
}
/// <summary>
/// Gets whether this call is user code.
/// </summary>
public virtual bool IsUserCode {
get {
return this.NameMapping.Id > 0;
}
}
/// <summary>
/// Gets whether the function call started in a previous data set that's not selected.
/// </summary>

4
src/AddIns/Misc/Profiler/Frontend/AddIn/Src/Views/ProfilerView.xaml

@ -25,7 +25,7 @@ @@ -25,7 +25,7 @@
<Grid>
<GridSplitter Width="0" Margin="0,202.5,0,204.5" />
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled" Margin="0,30,0,0" Height="90.5" HorizontalAlignment="Stretch" VerticalAlignment="Top">
<y:TimeLineControl Name="timeLine" RangeChanged="timeLine_RangeChanged" />
<y:TimeLineControl Name="timeLine" RangeChanged="TimeLineRangeChanged" />
</ScrollViewer>
<ToolBar Height="27" Name="toolBar1" VerticalAlignment="Top">
<Menu>
@ -40,7 +40,7 @@ @@ -40,7 +40,7 @@
<y:QueryView x:Name="treeView" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ShowQueryItems="False" CurrentQuery="from t in Threads select t" IsQueryModifiable="False" />
</TabItem>
<TabItem Header="Top 20">
<y:QueryView x:Name="top20View" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ShowQueryItems="False" CurrentQuery="(from f in Functions where f.CallCount > 0 orderby f.CpuCyclesSpentSelf descending select f).Take(20)" IsQueryModifiable="False" />
<y:QueryView x:Name="top20View" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ShowQueryItems="False" CurrentQuery="(from f in Functions where f.CallCount > 0 &amp;&amp; f.IsUserCode orderby f.CpuCyclesSpentSelf descending select f).Take(20)" IsQueryModifiable="False" />
</TabItem>
<TabItem Name="dummyTab" Header="">
</TabItem>

2
src/AddIns/Misc/Profiler/Frontend/AddIn/Src/Views/ProfilerView.xaml.cs

@ -54,7 +54,7 @@ namespace ICSharpCode.Profiler.AddIn.Views @@ -54,7 +54,7 @@ namespace ICSharpCode.Profiler.AddIn.Views
InitializeOldTabs();
}
void timeLine_RangeChanged(object sender, RangeEventArgs e)
void TimeLineRangeChanged(object sender, RangeEventArgs e)
{
foreach (TabItem item in this.tabView.Items) {
if (item != null && item.Content != null)

11
src/AddIns/Misc/Profiler/Frontend/Controls/CallTreeNodeViewModel.cs

@ -97,7 +97,7 @@ namespace ICSharpCode.Profiler.Controls @@ -97,7 +97,7 @@ namespace ICSharpCode.Profiler.Controls
if (this.parent == null)
return 1;
else
return (double)this.node.CpuCyclesSpent / (double)GetNodeFromLevel(1).node.CpuCyclesSpent;
return (double)this.node.CpuCyclesSpent / (double)this.parent.node.CpuCyclesSpent;
}
}
@ -110,15 +110,6 @@ namespace ICSharpCode.Profiler.Controls @@ -110,15 +110,6 @@ namespace ICSharpCode.Profiler.Controls
}
}
CallTreeNodeViewModel GetNodeFromLevel(int level)
{
if (this.level > level) {
return this.parent.GetNodeFromLevel(level);
}
return this;
}
public virtual string TimePercentageOfParentAsText
{
get {

3
src/AddIns/Misc/Profiler/Frontend/Controls/QueryView.xaml

@ -119,7 +119,7 @@ @@ -119,7 +119,7 @@
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="%" Width="80" x:Name="percentColumn">
<GridViewColumn Header="% of parent" Width="80" x:Name="percentColumn">
<GridViewColumn.CellTemplate>
<DataTemplate>
<DockPanel LastChildFill="false">
@ -142,6 +142,7 @@ @@ -142,6 +142,7 @@
<Label>Search:</Label>
<TextBox Name="txtSearch" Width="150" KeyDown="txtSearchKeyDown"></TextBox>
<CheckBox Content="Show Query Bar" IsChecked="{Binding ShowQueryItems}" />
<Button Content="Expand hot path in selected subtree" Name="btnExpandHotPathSubtree" Click="BtnExpandHotPathSubtreeClick" />
</ToolBar>
<DockPanel Name="queryPanel" Visibility="{Binding ShowQueryItems, Converter={StaticResource VisibilityConverter}}" Grid.Row="1" Grid.ColumnSpan="2">
<Button Name="btnExecuteQuery" DockPanel.Dock="Right" Click="btnExecuteQueryClick">Execute Query</Button>

17
src/AddIns/Misc/Profiler/Frontend/Controls/QueryView.xaml.cs

@ -294,6 +294,23 @@ namespace ICSharpCode.Profiler.Controls @@ -294,6 +294,23 @@ namespace ICSharpCode.Profiler.Controls
this.Invalidate();
}
void BtnExpandHotPathSubtreeClick(object sender, RoutedEventArgs e)
{
foreach (CallTreeNodeViewModel node in this.SelectedItems.ToArray()) {
ExpandHotPathItems(node);
}
}
void ExpandHotPathItems(CallTreeNodeViewModel parent)
{
if (parent.HotPathIndicatorVisibility == Visibility.Visible) {
parent.IsExpanded = true;
foreach (CallTreeNodeViewModel node in parent.Children)
ExpandHotPathItems(node);
}
}
public ContextMenu TreeViewContextMenu {
get { return this.treeView.ContextMenu; }
set { this.treeView.ContextMenu = this.ringDiagram.ContextMenu = value; }

Loading…
Cancel
Save