Skip to content

Instantly share code, notes, and snippets.

@Coldsp33d
Last active November 8, 2024 13:59
Show Gist options
  • Select an option

  • Save Coldsp33d/948f96b384ca5bdf6e8ce203ac97c9a0 to your computer and use it in GitHub Desktop.

Select an option

Save Coldsp33d/948f96b384ca5bdf6e8ce203ac97c9a0 to your computer and use it in GitHub Desktop.

Revisions

  1. Coldsp33d revised this gist Jun 8, 2020. 1 changed file with 14 additions and 11 deletions.
    25 changes: 14 additions & 11 deletions iter_vs_vec_benchmark.py
    Original file line number Diff line number Diff line change
    @@ -1,31 +1,34 @@
    import perfplot
    import pandas as pd

    def vectorization(df):
    return df['A'] + df['B']
    def vec(df):
    return df['A'] + df['B']

    def list_comprehension(df):
    return pd.Series([x + y for x, y in zip(df['A'], df['B'])], index=df.index)
    def vec_numpy(df):
    return df['A'].to_numpy() + df['B'].to_numpy()

    def list_comp(df):
    return [x + y for x, y in zip(df['A'], df['B'])]

    def apply(df):
    return df.apply(lambda row: row['A'] + row['B'], axis=1)
    return df.apply(lambda row: row['A'] + row['B'], axis=1)

    def iterrows(df):
    result = []
    for index, row in df.iterrows():
    result.append(row['A'] + row['B'])
    result = []
    for index, row in df.iterrows():
    result.append(row['A'] + row['B'])

    return pd.Series(result, index=df.index)
    return result


    df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
    kernels = [vectorization, list_comprehension, apply, iterrows]
    kernels = [vec, vec_numpy, list_comp, apply, iterrows]

    perfplot.show(
    setup=lambda n: pd.concat([df] * n, ignore_index=True),
    kernels=kernels,
    labels=[str(k.__name__) for k in kernels],
    n_range=[2**k for k in range(0, 12)],
    n_range=[2**k for k in range(16)],
    xlabel='N',
    logx=True,
    logy=True)
  2. Coldsp33d created this gist Jun 5, 2019.
    31 changes: 31 additions & 0 deletions iter_vs_vec_benchmark.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,31 @@
    import perfplot
    import pandas as pd

    def vectorization(df):
    return df['A'] + df['B']

    def list_comprehension(df):
    return pd.Series([x + y for x, y in zip(df['A'], df['B'])], index=df.index)

    def apply(df):
    return df.apply(lambda row: row['A'] + row['B'], axis=1)

    def iterrows(df):
    result = []
    for index, row in df.iterrows():
    result.append(row['A'] + row['B'])

    return pd.Series(result, index=df.index)


    df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
    kernels = [vectorization, list_comprehension, apply, iterrows]

    perfplot.show(
    setup=lambda n: pd.concat([df] * n, ignore_index=True),
    kernels=kernels,
    labels=[str(k.__name__) for k in kernels],
    n_range=[2**k for k in range(0, 12)],
    xlabel='N',
    logx=True,
    logy=True)