Я пытаюсь оценить производительность 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,50 ГГц × 4
- Память: 7,7 ГиБ
- Python: 3.5.2
- панд: 0.21.0
- numpy: 1.13.1
- Сумма: 0,19,0
Разве dask
не должен распараллеливаться и быть лучше при увеличении размера?