无论如何,我可以加速添加非常大的文本文件数据到自动完成组合框

本文关键字:数据 组合 文件 文本 加速 我可以 添加 非常 无论如何 | 更新日期: 2023-09-27 18:12:47

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

这个文本文件有一个巨大的电影范围(超过100MB),我有一个自动完成组合框。(建议用户自动完成电影名称)。

我现在使用的代码:

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万行名字会发生这种情况)

有更好的方法吗?别以为我看到了和我完全一样的问题。谢谢。

无论如何,我可以加速添加非常大的文本文件数据到自动完成组合框

我建议您将这些数据导入到任何数据库的表中。因此,您可以利用索引的速度非常快。

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

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

你也可以尝试一些算法,如二叉树或哈希表,或冲浪谷歌寻找"最好的文本搜索算法",但在现实世界中,我会运行一个数据库。

之后,你只需要进行异步调用来获得一个有限的列表(即前20个)和动态加载选项

一个选项是将数据源设置为SQL数据库-可能是SQLite,以保持其本地和简单,或者实现一个有效的搜索算法,如Trie