В поисках объяснения результатов теста Dask vs Numpy vs Pandas - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь оценить производительность 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)')

Может кто-нибудь объяснить результаты:

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

  • Процессор: 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 не должен распараллеливаться и быть лучше при увеличении размера?

1 Ответ

0 голосов
/ 05 сентября 2018

Ключевое слово chunks сокращенно от размера фрагмента, а не от количества фрагментов

...