0

我正在玩 DataVirtualization 和 Async。我有哪些选项可以量化我将虚拟化数据集合绑定到的 ListBox 的加载时间?

我需要一种方法来比较虚拟化和非虚拟化数据加载。未能成功找到此主题的任何资源。

我应该在后面的代码中的 ListBox_Loaded 事件上放一个秒表吗?

提前致谢!

4

1 回答 1

0

您可以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为整数添加了一个更大的值,它仍然会在一秒钟内将它们全部呈现出来。此外,重复运行此场景将返回不同的结果,因此这也有点不可靠。

于 2013-09-05T11:23:26.357 回答