使用链表和大数组进行搜索

时间:2016-03-02 14:10:38

标签: c arrays multithreading algorithm

我正在对传统的生活游戏实施一些算法更改。

基本上,我目前有两种方法可以实现多线程搜索算法,从而提高先前算法的效率。

  • 使用两个线程搜索链接列表并将数据中继到另外两个要处理的线程(应用程序在四核上运行)
  • 要有一个大量的预分配数组,该数组将基本上保持为空,只包含指向预定义结构的指针,在这种情况下,搜索可以更快地进行,并且在同步线程时不会出现问题。

更快的搜索会超过内存要求并缩短计算时间吗?

应该提到的是,数组将基本上保持空白,但分配给它的总内存将远远大于链表,更不用说最远的最大非空数组元素的索引也可以存储,以便阻止程序搜索整个数组。

我还应该提到数组存储指向活细胞坐标的指针,因此只能保持与最坏情况测量一样大。我还计划忽略任何NULL值,以便跳过已被删除的数组元素。

2 个答案:

答案 0 :(得分:1)

生命游戏和搜索?????

如果你想要一个多线程Game Of Life,你可以自己计算第n / 2行,但不要将它存储在数组中,只需要在一个缓冲区中,运行两个线程来计算和存储0到n / 2行 - 1分别行n / 2 + 1到n-1,然后将行n / 2复制到结果中。

对于四个线程,首先计算n / 4,n / 2,3 nn / 4的行,给每个线程四分之一的作业,然后将三行复制到数组中。

答案 1 :(得分:0)

如果您的阵列与大多数GOL板一样稀疏,那么列表可能更多,更多更快。指向下一条数据的指针比扫描它更好。

也就是说,总体表现可能并不像其他人提到的那样好。