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。
我觉得我在这里做错了什么但不确定是什么,因为我没有注意到多线程方面的重大差异。
我有一个 '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。