c# 多线程同时写数据表速度变慢的问题
读一个文本文件,并进行计算,完成后将计算结果分别写入到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判断重复等操作
//更新记录
}
.....
以上的方法比单线程执行还慢。
请大家帮忙看一下,以上方法存在的问题。
另外,如果有更好的实现方式,请不吝指教。 展开
由于单个文本文件很大,约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判断重复等操作
//更新记录
}
.....
以上的方法比单线程执行还慢。
请大家帮忙看一下,以上方法存在的问题。
另外,如果有更好的实现方式,请不吝指教。 展开
4个回答
展开全部
一般涉及网络、磁盘读写的程序采用多线程,计算过程使用多线程尚不划算。高性能并行计算使用c#不行。如果计算量大建议使用编译性语言(推荐使用FORTURN)。 .net属于半编译性平台,效率较低。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
cpu的计算是有限的。你这样多线程反而加重了计算负担。
基本上没什么好办法。慢慢做吧
尽量优化下代码。还有数据库操作。
基本上没什么好办法。慢慢做吧
尽量优化下代码。还有数据库操作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当然比单线程慢罗,单线程还一直在写,你多线程还要加上不断的切换线程的消耗。做同一件事情,多线程比单线程慢!
如果你是存入MSSQL的话,可以用个批量插入,效率会高很多。用里面提供的Bulk Insert
如果你是存入MSSQL的话,可以用个批量插入,效率会高很多。用里面提供的Bulk Insert
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议使用存储过程。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询