WPF中的一個開發應用程序在i5處理器上運行速度非常慢。 UI在嵌套Items控件中包含多個用戶控件(200+)。相同的應用程序在其中一臺桌面計算機上以良好的性能運行。WPF應用程序在i5處理器機器上變慢
下面是筆記本電腦的詳細配置,其中它的速度很慢(50秒渲染UI):
操作系統:Windows XP專業版(5.1,版本2600)的Service Pack 3(2600.xpsp_sp3_gdr。 101209-1647) 系統製造商:LENOVO 系統型號:2537W2K BIOS:版1.00PARTTBLx 處理器:Intel(R)核心(TM)15 CPU中號520 @ 2.40GHz的(4個CPU) 內存:3060MB RAM 頁文件:784MB used,5172MB available Windows目錄:C:\ WINDOWS DirectX版本:的DirectX 9.0c(4.09.0000.0904) DX設置參數:未找到 輸入dxdiag版本:5.03.2600.5512 32位的Unicode
顯示
卡名稱:NVIDIA NVS 3100M 製造商:NVIDIA 芯片類型:NVS 3100M DAC類型:集成RAMDAC 設備密鑰:枚舉\ PCI \ VEN_10DE & DEV_0A6C & SUBSYS_214217AA & REV_A2 顯示內存:256.0 MB 電流模式:1680×105 0(32位)(60Hz)的 監視器:的ThinkPad顯示1440 監視器最大RES:1440,900
下面是桌面的詳細結構,其中它的快速(6秒來輸出相同UI):
操作系統:Windows XP專業版(5.1,版本2600)的Service Pack 3(2600.xpsp_sp3_gdr.101209-1647) 系統製造商:戴爾公司 系統型號:755的OptiPlex
BIOS:菲尼克斯ROM BIOS PLUS版本1.10 A04 處理器:Intel(R)Core(TM)2 Duo CPU E6550 @ 2.33GHz(2 CPU) 內存:2004MB RAM 頁面文件:使用1544MB,2353MB可用 Windows目錄:C:\ WINDOWS DirectX版本:DirectX 9.0 C(4.09.0000.0904) DX設置參數:未找到 輸入dxdiag版本:5.03.2600.5512 32位的Unicode
顯示卡
卡名稱:Intel(R)Q35高速芯片組家族 廠商:英特爾公司芯片類型:英特爾(R)GMA 3100 DAC類型:內部 設備密鑰:枚舉\ PCI \ VEN_8086 & DEV_29B2 & SUBSYS_02111028 & REV_02 顯示內存:384.0 MB 電流模式:1280 * 960(32位)(60Hz)的 監視器:即插即用監視器 監視器最大Res:1600,1200 驅動名稱:igxprd32.dll 驅動程序版本:6.14.0010。4837(英語)
請幫我理解放慢渲染速度的原因。
<Grid x:Name="grid" Margin="3,0,0,15" HorizontalAlignment="Center" VerticalAlignment="Top"
IsEnabled="{Binding IsEnableOrDisableControl}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="70*" />
<ColumnDefinition Width="05" />
<ColumnDefinition Width="65" />
<ColumnDefinition Width="05" />
<ColumnDefinition Width="65" />
<ColumnDefinition Width="05" />
<ColumnDefinition Width="65" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="30" />
<RowDefinition Height="05" />
<RowDefinition Height="15" />
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<AppUserControl:NumericUPDown Value="{Binding Total, Mode=TwoWay}"
MinValue="2" MaxValue="{Binding MaxValue}" Grid.Column="0"
Grid.Row="0"
x:Name="NoOfFltr"
/>
<Button Background="Transparent" BorderBrush="Transparent" BorderThickness="0"
Grid.Column="2" Grid.Row="0" ToolTip="Plot" HorizontalAlignment="Left"
>
<Button.Content>
<Image Width="16" Height="16">
<Image.Source>
<BitmapImage UriSource="..\Pictures\icon.png" DecodePixelWidth="16" />
</Image.Source>
</Image>
</Button.Content>
<Button.InputBindings>
<MouseBinding Gesture="CTRL+LeftClick" Command="{Binding OpenNewWindowCommand}" CommandParameter="0" />
<MouseBinding Gesture="LeftClick" Command="{Binding OpenCommand}" CommandParameter="1" />
</Button.InputBindings>
</Button>
<TextBlock Text="Text1" Height="20" VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Row="2" Grid.Column="0" />
<TextBlock Text="Text2" Height="20" VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Row="2" Grid.Column="2" />
<TextBlock Text="Text3" Height="20" VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Row="2" Grid.Column="4" />
<TextBlock Text="Text4" Height="20" VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Row="2" Grid.Column="6" />
<Grid Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="7" HorizontalAlignment="Left" Height="{Binding DataParameterHeight}">
<ItemsControl Name="BiquadItem" ItemsSource="{Binding Parameters }">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="70*" />
<ColumnDefinition Width="05" />
<ColumnDefinition Width="65" />
<ColumnDefinition Width="05" />
<ColumnDefinition Width="65" />
<ColumnDefinition Width="05" />
<ColumnDefinition Width="65" />
</Grid.ColumnDefinitions>
<ComboBox Name="cmbType" Width="70" HorizontalAlignment="Left" VerticalAlignment="Top"
ItemsSource="{Binding Source={StaticResource mdwType}}" Grid.Column="0" SelectedValue="{Binding bqType, Mode=TwoWay}" >
</ComboBox>
<AppUserControl:UnitUpDown Value="{Binding frq, Mode=TwoWay}" MinValue="0"
MaxValue="24000" Grid.Column="2" IsEnabled="{Binding Status}" Increment="1"
/>
<AppUserControl:NumericUPDown Value="{Binding scale, Mode=TwoWay}"
Grid.Column="4" IsEnabled="{Binding Status}" DecimalPoint="2" Increment="0.01"
MinValue="{Binding ElementName=biquadGrid, Path=DataContext.MinVal}"
MaxValue="{Binding ElementName=bqgrid, Path=DataContext.MaxVal}" />
<AppUserControl:NumericUPDown Value="{Binding qFactors, Mode=TwoWay}"
MinValue="0.001" MaxValue="24" Grid.Column="6" IsEnabled="{Binding qStatus}" DecimalPoint="3" Increment="0.01"
/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Grid>
這很大程度上取決於您所呈現的內容 - 超過200多個用戶控件,它們是什麼?有什麼影響? –
我沒有得到的是爲什麼你在一臺i5機器上運行XP - 你確定你正在使用Nvidia芯片而不是集成的i5 GPU內核?在第一代他們是相當垃圾所以也許這就是你的問題 – hyp
感謝您的答覆。我正在使用一個包含1個文本框和2個重複按鈕的用戶控件。這個用戶控件在嵌套的itemscontrol中呈現200次以上。上面的XAML代碼在使用嵌套itemscontrol的用戶控件中調用。 –