从 WPF 应用程序中的任何文件输入都非常慢
Input from any file in WPF Application is very Slow
我有一个 WPF 应用程序,它从用户那里获取输入文件路径,然后在后端打开文本文件并尝试从文件中读取单个字符。
fs = File.OpenRead(fileName);
var sr = new StreamReader(fs);
int c;
while ((c = sr.Read()) != -1)
{
Console.Write((char)c); //to check character read from file
try
{
frequencyMap.Add((char)c, 1);
}
catch
{
frequencyMap[(char)c] += 1;
}
}
这里的frequencyMap是字典,其中存储了字符和它的频率。
这是一种方法,无论我做什么,即使我尝试阅读整个文本,从文件中读取总是很慢。在输出 window 我看到
所选区域是文件输入的部分。
最大 2KB 的文件很好,但是读取 20KB 这样的文件真的很困难。
现在我读到使用线程可以解决这个问题,我只是不知道如何解决。
我的问题是如何快速从文件中读取数据?如果使用线程是解决方案,那么如何实现它?
我是新手,请帮助我。
谢谢
首先我希望Console.WrieLine是纯粹的测试代码。为每个字符写入控制台会大大减慢您的处理速度。
其次,从您分享的屏幕截图来看,您的应用程序抛出了很多异常。在紧密循环中抛出异常也不便宜。
第三,我建议您分析您的应用程序(visual studio 提供分析器)以帮助您查明您的应用程序究竟将时间花在哪里。
不要按字符读取,例如按行读取,循环处理每个字符串。 Exception
也不是检查键是否存在于字典中的方法。
using (var sr = new StreamReader(fileName))
{
while (!sr.EndOfStream)
{
string s = sr.ReadLine();
Debug.WriteLine(s); //to check string read from file
foreach (char c in s)
{
if (frequencyMap.ContainsKey(c))
frequencyMap[c]++;
else
frequencyMap.Add(c, 1);
}
}
}
我有一个 WPF 应用程序,它从用户那里获取输入文件路径,然后在后端打开文本文件并尝试从文件中读取单个字符。
fs = File.OpenRead(fileName);
var sr = new StreamReader(fs);
int c;
while ((c = sr.Read()) != -1)
{
Console.Write((char)c); //to check character read from file
try
{
frequencyMap.Add((char)c, 1);
}
catch
{
frequencyMap[(char)c] += 1;
}
}
这里的frequencyMap是字典,其中存储了字符和它的频率。 这是一种方法,无论我做什么,即使我尝试阅读整个文本,从文件中读取总是很慢。在输出 window 我看到
所选区域是文件输入的部分。 最大 2KB 的文件很好,但是读取 20KB 这样的文件真的很困难。
现在我读到使用线程可以解决这个问题,我只是不知道如何解决。
我的问题是如何快速从文件中读取数据?如果使用线程是解决方案,那么如何实现它?
我是新手,请帮助我。 谢谢
首先我希望Console.WrieLine是纯粹的测试代码。为每个字符写入控制台会大大减慢您的处理速度。
其次,从您分享的屏幕截图来看,您的应用程序抛出了很多异常。在紧密循环中抛出异常也不便宜。
第三,我建议您分析您的应用程序(visual studio 提供分析器)以帮助您查明您的应用程序究竟将时间花在哪里。
不要按字符读取,例如按行读取,循环处理每个字符串。 Exception
也不是检查键是否存在于字典中的方法。
using (var sr = new StreamReader(fileName))
{
while (!sr.EndOfStream)
{
string s = sr.ReadLine();
Debug.WriteLine(s); //to check string read from file
foreach (char c in s)
{
if (frequencyMap.ContainsKey(c))
frequencyMap[c]++;
else
frequencyMap.Add(c, 1);
}
}
}