Multi-Threading/Task 差异很小,如何加快进程

Multi-Threading/Task making minimal difference, how to speed up process

我觉得我在这里做错了什么但不确定是什么,因为我没有注意到多线程方面的重大差异。

我有一个 'Convert_Data' 函数可以处理大量数据。我使用 1 个任务对其进行了测试,发现它能够在 8 秒内完成。当试图将工作分成 4 个任务时,整体减少了 2 秒。我期待它至少将处理过程减半?

t1 = Task.Factory.StartNew(Sub() Convert_Data(Filter, 0, CInt(GridView1.RowCount / 4)))
t2 = Task.Factory.StartNew(Sub() Convert_Data(Filter, CInt(GridView1.RowCount / 4) + 1, CInt(GridView1.RowCount / 2)))
t3 = Task.Factory.StartNew(Sub() Convert_Data(Filter, CInt(GridView1.RowCount / 2) + 1, CInt(GridView1.RowCount / 3)))
t4 = Task.Factory.StartNew(Sub() Convert_Data(Filter, CInt(GridView1.RowCount / 3) + 1, GridView1.RowCount))

我根据 gridview 中的行数分解任务。所以每个任务都会得到四分之一的文件来处理。我对任务很陌生,不确定我是否做错了什么。有 comments/suggestions 吗?

我注意到任务 4 比其他任务需要更长的时间才能完成。

Conver_Data 子(过滤器、StarRow、结束行) 所以如果有100个文件;

任务 1 将从 0 - 25

任务 2 将从 26 - 50

任务 3 将从 51 - 75 &

任务 4 将从 76 - 100

代码不应该读成类似...

t1 = Task.Factory.StartNew(Sub() Convert_Data(Filter, 0, CInt    (GridView1.RowCount / 4)))
t2 = Task.Factory.StartNew(Sub() Convert_Data(Filter, CInt(GridView1.RowCount / 4) + 1, CInt(GridView1.RowCount / 2)))
t3 = Task.Factory.StartNew(Sub() Convert_Data(Filter, CInt(GridView1.RowCount / 2) + 1, CInt(3 * GridView1.RowCount / 4)))
t4 = Task.Factory.StartNew(Sub() Convert_Data(Filter, CInt(3 * GridView1.RowCount / 4) + 1, GridView1.RowCount))

按照目前的情况,您的第一个任务似乎完成了 1/4 的工作,第二个任务完成了四分之一,第三个任务完成了 1/6,最后 2/3。