无论如何,我可以加速添加非常大的文本文件数据到自动完成组合框
本文关键字:数据 组合 文件 文本 加速 我可以 添加 非常 无论如何 | 更新日期: 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