Sve*_*ven 8 c# lookup performance gpu
我有一个123MB的大int数组,它基本上是这样用的:
private static int[] data = new int[32487834];
static int eval(int[] c)
{
int p = data[c[0]];
p = data[p + c[1]];
p = data[p + c[2]];
p = data[p + c[3]];
p = data[p + c[4]];
p = data[p + c[5]];
return data[p + c[6]];
}
Run Code Online (Sandbox Code Playgroud)
eval()被称为很多(约50B次)与不同c,我想知道是否(以及如何)我可以加快它.
我已经使用了一个不安全的函数和一个使用所有CPU 的固定数组.它是RayW的TwoPlusTwo 7卡评估器的C#端口.C++版本的速度微不足道.
GPU可以用来加快速度吗?
GCHandle来修复数组并将指针缓存在静态字段中(不要只使用固定块 - 我相信它具有与输入它相关的某些(小)开销。不确定)。VirtualAlloc大页分配 123MB 数组。这减少了 TLB 失误。所有这些都是核心的低级优化。它们仅适用于您需要最高性能的情况。
我认为在优化这个函数时我们几乎已经达到了极限。如果您显示函数的调用者,以便它们可以作为一个单元进行优化,我们可能只能做得更好。