无论如何,我可以加快将非常大的文本文件数据添加到 AutoComplete ComboBox 中的速度吗?

Anyway possible I can speed up adding very large textfile data into AutoComplete ComboBox?

为自己制作一个与movies/tv节目有关的小程序。目前我将所有电影格式化为一个 txt 文件。每行一个电影标题。

此 txt 文件包含大量电影(超过 100MB),我有一个自动完成组合框。 (向用户建议 auto-completion 电影名称)。

我现在使用的代码:

private void addComboBox()
    {
        try
        {

            using (StreamReader reader = new StreamReader("movies.txt"))
            {
                String line;
                while ((line = reader.ReadLine()) != null)
                {
                    String editline = line.TrimStart();
                    //System.Console.WriteLine(editline);                                         
                    movies.Items.Add(editline);

                }
            }
        }

        catch (IOException e)
        {
            System.Console.WriteLine("Error opening the file of movies! " + e);
        }
    }

现在使用代码,实际启动程序大约需要 20 秒,并且在输入电影时它非常缓慢。 (猜猜 270 万行名称会发生​​这种情况)

有没有更好的方法来做到这一点?不要以为我见过和我一模一样的问题。谢谢

我建议您将此数据导入任何数据库的 table。所以您可以利用非常快的索引。

如果您需要更具扩展性和快速的方法,您可以尝试特定的文本索引数据库,例如 Cassandra、Dynamo、Mongo、ElasticSearch 等。

但在一个简单的场景中,我相信如果你使用任何数据库,即使你选择 Access 或 SQLite,你也会赢很多。

您也可以尝试一些算法,例如二叉树或哈希表,或者浏览 Google 寻找 "the best text search algorithm",但在现实世界中我会 运行 建立一个数据库.

之后,您只需进行异步调用即可获取有限列表(即前 20 个)并动态加载选项。

一个选项是将您的数据源设置为 SQL 数据库 - 也许 SQLite 以使其保持本地和简单,或者实施高效的搜索算法,例如 Trie