寻求对Dask,Numpy和Pandas基准测试结果的解释

时间:2018-09-05 10:27:55

标签: python pandas numpy dask

我正在尝试对daskpandas的性能进行基准测试。

def make_pandas(n):
    df = pd.DataFrame(np.random.randint(10, size=(n, 3)))
    return df

def make_dask(n):
    df = da.from_array(np.random.randint(10, size=(n, 3)), chunks=10)
    return df

def make_numpy(n):
    return np.random.randint(10, size=(n, 3))

def sum_pandas(x): return x[0].sum()
def sum_dask(x): return x[1].sum()
def sum_numpy(x): return x[2].sum()

perfplot.show(
    setup=lambda n: [make_pandas(n), make_dask(n), make_numpy(n)],
    kernels=[sum_pandas, sum_dask, sum_numpy],
    n_range=[2**k for k in range(2, 15)],
    equality_check=False,
    xlabel='len(df)')

有人可以解释结果吗?

dask v numpy v pandas - 10 dask chunks

将块增加到1000、8000和10000分别得到这些:

dask v numpy v pandas - 1000 dask chunks

dask v numpy v pandas - 8000 dask chunks

dask v numpy v pandas - 10000 dask chunks

  • 处理器:2.50GHz×4的Intel®Core™i5-7300HQ CPU
  • 内存:7.7 GiB
  • Python:3.5.2
  • 熊猫:0.21.0
  • numpy:1.13.1
  • 任务:0.19.0

dask是否应该并行化并随着大小的增加而变得更好?

1 个答案:

答案 0 :(得分:0)

chunks关键字是存储块大小的缩写,不是存储块的数量