我正在玩 DataVirtualization 和 Async。我有哪些选项可以量化我将虚拟化数据集合绑定到的 ListBox 的加载时间?
我需要一种方法来比较虚拟化和非虚拟化数据加载。未能成功找到此主题的任何资源。
我应该在后面的代码中的 ListBox_Loaded 事件上放一个秒表吗?
提前致谢!
我正在玩 DataVirtualization 和 Async。我有哪些选项可以量化我将虚拟化数据集合绑定到的 ListBox 的加载时间?
我需要一种方法来比较虚拟化和非虚拟化数据加载。未能成功找到此主题的任何资源。
我应该在后面的代码中的 ListBox_Loaded 事件上放一个秒表吗?
提前致谢!
您可以System.Diagnostics.Stopwatch
为此使用 a 。确保在设置属性之前ListBox.ItemsSource
启动它并按照您所说的那样停止它,在以下情况ListBox.Loaded
下:
在 XAML 中:
<ListBox Name="ListBox" />
在代码构造函数中:
public MainWindow()
{
InitializeComponent();
ListBox.Loaded += new RoutedEventHandler(ListBox_Loaded);
Items.AddRange(Enumerable.Range(1, 100000000));
stopwatch = new Stopwatch();
stopwatch.Start();
ListBox.ItemsSource = Items;
}
在调用后添加带有断点的处理程序以停止Stopwatch
:
private void ListBox_Loaded(object sender, RoutedEventArgs e)
{
stopwatch.Stop();
TimeSpan elapsedTime = stopwatch.Elapsed;
}
但是,除非您有数百万行数据,或者极其复杂DataTemplates
,否则您可能看不到太多差异。在这个简单的示例中,这 100,000,000 个数字的处理时间不到一秒。即使我DataTemplate
为整数添加了一个更大的值,它仍然会在一秒钟内将它们全部呈现出来。此外,重复运行此场景将返回不同的结果,因此这也有点不可靠。