仪器社区

c# 多线程同时写数据表速度变慢的问题

58sss690 2009-09-24
读一个文本文件,并进行计算,完成后将计算结果分别写入到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判断重复等操作 //更新记录 } ..... 以上的方法比单线程执行还慢。 请大家帮忙看一下,以上方法存在的问题。 另外,如果有更好的实现方式,请不吝指教。
评论
全部评论
凭栏远眺100狮
当然比单线程慢罗,单线程还一直在写,你多线程还要加上不断的切换线程的消耗。做同一件事情,多线程比单线程慢!
如果你是存入MSSQL的话,可以用个批量插入,效率会高很多。用里面提供的Bulk Insert
12 0 2009-09-25 0条评论 回复
郊外的号角
建议使用存储过程。。
19 0 2009-09-26 0条评论 回复
虎子2023
cpu的计算是有限的。你这样多线程反而加重了计算负担。
基本上没什么好办法。慢慢做吧
尽量优化下代码。还有数据库操作。
11 0 2009-09-25 0条评论 回复
孟展作
一般涉及网络、磁盘读写的程序采用多线程,计算过程使用多线程尚不划算。高性能并行计算使用c#不行。如果计算量大建议使用编译性语言(推荐使用FORTURN)。 .net属于半编译性平台,效率较低。
19 0 2009-09-25 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论