在kdb

时间:2015-12-27 17:11:21

标签: kdb

在主线程和从线程之间共享只读数据的理想方法是什么?根据我的理解,有两种选择:

  1. 在main中将共享数据设置为全局变量,以便从属线程可以读取它们。
  2. 将共享变量作为参数传递给从属线程。
  3. 根据我的实验,即使有大数据集,也几乎没有任何性能差异。事实上,1)表现略差于2)。我知道2),kdb将序列化和序列化参数。是否对1)做同样的事情?考虑到全局变量的大小比线程特定参数更大,这可以解释性能的下降。有没有其他方法可以做到这一点?

    其次,由于从属线程无法修改全局变量。我认为与主线程共享结果的唯一方法是将它们返回。如果不是这样,请评论。

    编辑:在调用桃子之前和之后,根据运行时间来衡量效果。

1 个答案:

答案 0 :(得分:0)

通过像这样的桃子将值传递给函数

molarMass

听起来不错,效果很好,除非v非常大。每个线程都获得一个副本(即使v是全局的)。

所以答案取决于你的用例。你有足够的内存吗?给定线程数量,你能负担得起内存副本吗?如果答案是肯定的,那么你可以做到这一点而不会产生太多不良影响(记住分配会影响时间)。

出于这个原因,我更喜欢使用全局变量。