更新类属性的最快方法

时间:2013-09-04 12:50:31

标签: vb.net multithreading

我有一个相当大的程序,因此只是简化一点。

所以我有一个List(Of Entity),Entity是一个包含大量属性的自定义类。我有一个1ms的计时器,不断更新此列表。在计时器中,它从外部源创建一个临时列表,如果该列表与当前列表不同,则更新主列表。

我认为现在这是变慢的地方。我有很多线程,一个用于类的每个属性,它不断更新该属性(值来自外部)并且我将它们全部停止,否则当列表更新时它会抛出各种错误。然后我用临时列表更新主列表,然后再次创建新线程,例如

Prop1Thread = New Thread(AddressOf UpdateProp1)

再次启动它们。

我可以使用更好的方法吗?必须在不同的线程中更新属性,否则会破坏性能。我无法改变我获得实体列表的方式。我真的需要一种更好的方法来处理更改实体列表的属性的更新。

1 个答案:

答案 0 :(得分:2)

首先我会说:发布一些代码,因为没有足够的信息来确定任何东西。

其次:听起来好像你的房产更新有很多线程。如果你的机器上有多个线程而不是处理器,那么你最有可能放慢代码速度,而不是加速代码。

此外,听起来你在计时器上每1毫秒做很多工作。在这种情况下,我猜你会过于激进地抨击你的系统 - 除非你确定你在问题中提到的一切都在< 1毫秒。根据您处理计时器的方式,您可能会堆叠多次代码迭代,这也会导致性能下降。

我的建议是:

  • 将所有内容放到几个线程中(一个用于属性更新处理,一个用于计时器) - 听起来好像你有太多
  • 降低计时器的频率。实际上,摆脱计时器并针对单次迭代进行测试以查看一次性更新时间是什么,然后重新启动计时器以了解这会影响性能(如果有的话)
  • 个人资料,个人资料,个人资料以了解问题
相关问题