我目前的方法需要大约 40 分钟来解析所有这些数据:
目前的逻辑是:
foreach (var file in files)<br/>{<br/> using (var input = new StreamReader(file.FullName))<br/> {<br/> while (!input.EndOfStream)<br/> {<br/> City parsedCity = ParseCity(input.ReadLine());<br/> }<br/> SQL.submit()<br/> }<br/>}
您可能认为解析是最快的。
最佳答案
尝试这样的事情。尝试使用 maxParallelism,从系统中的核心数开始:
class Program
{
static void Main(string[] args)
{
var maxParallelism = Environment.ProcessorCount;
Parallel.ForEach(files, new ParallelOptions { MaxDegreeOfParallelism = maxParallelism }, ParseAndPersist);
}
public static void ParseAndPersist(FileInfo fileInfo)
{
//Load entire file
//Parse file
//Execute SQL asynchronously..the goal being to achieve maximum file throughput aside from any SQL execution latency
}
}
关于c# - 我需要解析 250 个文件,总计 1gb 的数据并将其上传到 SQL 服务器。我能比这更有效率吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9260404/