寻求对 Dask vs Numpy vs Pandas 基准测试结果的解释
Seeking explanation to Dask vs Numpy vs Pandas benchmark results
我正在尝试对 dask
与 pandas
的性能进行基准测试。
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)')
谁能解释一下结果:
将块增加到 1000、8000 和 10000 分别得到这些:
- 处理器:Intel® Core™ i5-7300HQ CPU @ 2.50GHz × 4
- 内存:7.7 GiB
- Python: 3.5.2
- pandas: 0.21.0
- numpy: 1.13.1
- 达斯克:0.19.0
难道 dask
不应该并行化并且随着大小的增加而变得更好吗?
chunks
关键字是 chunksize 的缩写,而不是 number of chunks
我正在尝试对 dask
与 pandas
的性能进行基准测试。
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)')
谁能解释一下结果:
将块增加到 1000、8000 和 10000 分别得到这些:
- 处理器:Intel® Core™ i5-7300HQ CPU @ 2.50GHz × 4
- 内存:7.7 GiB
- Python: 3.5.2
- pandas: 0.21.0
- numpy: 1.13.1
- 达斯克:0.19.0
难道 dask
不应该并行化并且随着大小的增加而变得更好吗?
chunks
关键字是 chunksize 的缩写,而不是 number of chunks