作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个这样设置的程序。它是一个 .Net Framework 4 控制台应用程序。该程序用于从每台服务器上的每个日志文件(上周)收集 sc-bytes 和 cs-bytes。该程序已完成,但需要很长时间才能运行。
foreach (string server in servers)
{
foreach (string website in Directory.GetDirectories(server))
{
foreach (string file in Directory.GetFiles(website))
{
我只是想知道是否可以使用诸如线程或 PLINQ 之类的东西来加速这个过程?如果这会提高性能,我不确定实现它的最佳方法,因为为每个日志文件(甚至每个网站)创建一个新线程似乎不合逻辑,因为拥有那么多线程显然不会提高性能。
如果您需要查看更多代码,请询问,但该程序基本上读取最近 7 天内创建的每个文件的每一行,添加字节数,然后使用目录条目获取网站名称(来自ID),然后将每个网站的名称和总字节数输出到一个文本文件(最终将成为一个数据库)。我不需要任何实际代码,只需要有关提高性能的最佳方法(如果可能)的建议。
谢谢。
最佳答案
在像这样的 IO 绑定(bind)任务中(遍历目录和文件并读取它们),瓶颈是磁盘 IO,而不是 CPU。
并行化(?)这不太可能有助于加快速度,甚至可能会损害性能。
关于c# - 线程会提高性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10954340/
我是一名优秀的程序员,十分优秀!