【问题标题】:Performance issue in giving suggestions in AutoSuggestBox in C#在 C# 的 AutoSuggestBox 中给出建议时的性能问题
【发布时间】:2016-10-06 13:53:27
【问题描述】:

我正在用 C# 制作一个使用 AutoSuggestBox 的应用程序。我在该应用程序中有一个 json 文件,我已将其反序列化为 List 对象。该json文件如下所示。

{"_id":690856,"name":"Tyuzler","country":"UA","coord":{"lon":34.083332,"lat":44.466667}}
{"_id":464737,"name":"Zaponor’ye","country":"RU","coord":{"lon":38.861942,"lat":55.639999}}
{"_id":707716,"name":"Il’ichëvka","country":"UA","coord":{"lon":34.383331,"lat":44.666668}}

它有大约 2,00,000 个这样的行。

这是我面临性能问题的地方。因为它有 2,00,000 行,所以我的 List 对象有 2,00,000 个成员。

当我在 AutoSuggestBox 中键入一个字母时,需要 15-20 秒才能提出建议。在我输入下一个字母后,它会重复相同的内容。那么,如何让它快速响应呢?

【问题讨论】:

  • 您使用的是什么 UI 平台,WinForms、WPF 还是 UWP?你也是只加载一次json文件吗?
  • 我正在使用 UWP。我已将 json 文件复制到项目中。在触发 TextChanged 事件后,我正在反序列化 json 并将其解析为 List 对象。
  • 这就是导致您的性能问题的原因。加载和解析 json 需要时间。如果您不希望它经常更改,您应该只在应用程序启动时加载和解析文件。您还应该利用 Task 的多线程,这样您就不会锁定 UI。
  • 所以,无论我使用哪种方法来解析 json 文件,我都应该将其绑定到应用程序启动。不会让应用启动时间变长吗?
  • 如果你把它扔到一个单独的/后台线程上就不行了。

标签: c# json performance autosuggest


【解决方案1】:

我已经找到了问题所在。我不是在应用程序启动后解析 json 文件,而是在应用程序启动时解析它。这有助于在我在 AutoSuggestBox 中键入字母后立即建议选项。

由于我在应用打开时对其进行解析,因此应用需要多花 2 秒才能打开。但这很好,因为我的 json 文件非常大(几乎 2,00,000 行)。

【讨论】:

    猜你喜欢
    • 2011-11-26
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多