在我的应用程序中,我有一些结构如下
if(iterationCount==-3)
{
CreatFullNetwork(obj1)
}
if(iterationCount==-2)
{
CreatFullNetwork(obj2)//Method is same as previous
}
if(iterationCount==-1)
{
//Obj1,2,3 are same object but the sorting order variables inside object are different
CreatFullNetwork(obj3)//Method is same as previous
}
为了提高性能,我计划创建3个线程并将其并行运行。这是一个好方法,它会起作用。
注意:CreatFullNetwork()
是非常庞大的方法,它有子方法并创建大量集合并更新它们
答案 0 :(得分:3)
在注释中,您声明函数调用不受CPU限制。它没有达到接近100%的CPU利用率。在这种情况下,您的程序的性能似乎不太可能通过多线程提高。
最重要的是,您的代码似乎使用了许多未同步的共享变量。在您考虑并行运行代码之前,您需要处理该问题。通常有两种方法可以做到这一点:
一般来说,选项2更好,因为序列化由于使用锁而具有性能开销。但是,选项2可能很难实现,并且在您需要复制大量数据时可能会出现自身的性能问题。
如果您的代码不受CPU限制,那么大多数情况都没有实际意义。也就是说,也许瓶颈在于另一台机器。也许瓶颈在于数据库访问。如果数据库可以有效地处理并行访问,那么线程可能会有所帮助。
最重要的是,您需要更清楚地了解代码的作用以及限制性能的因素,然后才能考虑加快速度的选项。线程不是万能的灵丹妙药。它无助于加快所有程序的速度,您始终需要知道如何最好地部署它。