我现在用C#写了一个窗体软件,软件可以根据输入的线程数自动开启相应的线程,我现在不知道开几个线程来处理最好?下面是数据处理的一些描述,望大家给点建议。
我的电脑CPU是fx8350八核八线程主频是4G内存4G
数据库里有30万条url链接数据要处理,提取数据会占用将近1G的内存,30万条数据在主线程按线程数分配任务,开启相应的线程数处理分配的任务(全部线程是一起开启的),任务的内容是给链接加前缀然后连接获取html文本数据,从里面找出需要的数据并写入数据库。开几个线程合适?开8个以上是不是都会运行?运行情况是什么样的?会出现部分线程等待吗?或者出现过多的线程开启反而降低了性能?
主线程任务分配会花掉两分钟时间,自己计算了一下如果用一个线程去处理这30万条数据需要六天时间,多线程处理估计也会花很长的时间,现在是打算间断处理这些数据。
没有放之四海而皆准的答案,自己测试吧,或者你花多几百元买16G内存,比你花5天时间优化程序效果还更好。
30万条数又不是30亿条。
30万条数据需要6天时间,瓶颈不在线程,在数据库、内存、硬盘和CPU上。
谢谢大叔,现在明白了,程序做的再好,硬件也要跟得上,现在就去淘几根内存条(●'◡'●)
8核8线程的CPU就这么被你糟蹋了
手上的电脑几乎都是八线程的,是按游戏主机线程数来配的,配的时候内存也是8G,之后坏了一条,不知道怎么回事,内存条特别容易坏( ▼-▼ )