读一个文本文件,并进行计算,完成后将计算结果分别写入到10个(假定)表中。由于单个文本文件很大,约200M以上,计算需要比较长的时间,想通过多线程同时写10个表,以便节约时间。以下... 读一个文本文件,并进行计算,完成后将计算结果分别写入到10个(假定)表中。
由于单个文本文件很大,约200M以上,计算需要比较长的时间,想通过多线程同时写10个表,以便节约时间。
以下是实现的方法:
数据读取: 循环读取文本文件,并将字段值放入到变量中
{
......
Thread thdTable1 = new Thread(into_table1);
thdTable1.Start();
thdTable1.Join();
Thread threadTable2= new Thread(into_table2);
thdTable2.Start();
thdTable2.Join();
......
}
//有10个线程同时运行
into_table1()
{
//计算...
//其间有通过reader判断重复等操作
//写入DB...
}
into_table2()
{
//计算...
//其间有通过reader判断重复等操作
//更新记录
}
.....
以上的方法比单线程执行还慢。
请大家帮忙看一下,以上方法存在的问题。
另外,如果有更好的实现方式,请不吝指教。
一般涉及网络、磁盘读写的程序采用多线程,计算过程使用多线程尚不划算。高性能并行计算使用c#不行。如果计算量大建议使用编译性语言(推荐使用FORTURN)。 .net属于半编译性平台,效率较低。