无论如何,我可以加快将非常大的文本文件数据添加到 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
为自己制作一个与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