Skip to content

PERF: performance regressions in 0.20.dev #16043

Closed
@jorisvandenbossche

Description

@jorisvandenbossche

Comparing 0.19.2 with the latest master, and using a factor of 1.5 as threshold, I get those:

Benchmarks that have got worse:

    before     after       ratio
  [6f525eec] [f880728d]
+    1.50ms     6.70ms      4.46  algorithms.Hashing.time_series_categorical
+  112.62ms   217.37ms      1.93  frame_methods.frame_duplicated.time_frame_duplicated_wide
+   11.56ms    20.40ms      1.76  groupby.GroupBySuite.time_unique('float', 100)
+     1.09s      1.95s      1.78  groupby.GroupBySuite.time_unique('float', 10000)
+    7.71ms    13.28ms      1.72  groupby.GroupBySuite.time_unique('int', 100)
+  672.77ms      1.22s      1.82  groupby.GroupBySuite.time_unique('int', 10000)
+    5.81ms     9.45ms      1.63  groupby.groupby_categorical.time_groupby_nosort
+   16.47ms    36.74ms      2.23  groupby.groupby_period.time_groupby_sum
+   46.41ms   127.96ms      2.76  inference.to_numeric_downcast.time_downcast('int-list', 'float')
+   56.87ms   138.24ms      2.43  inference.to_numeric_downcast.time_downcast('int-list', 'integer')
+   56.60ms   138.73ms      2.45  inference.to_numeric_downcast.time_downcast('int-list', 'signed')
+   57.44ms   143.97ms      2.51  inference.to_numeric_downcast.time_downcast('int-list', 'unsigned')
+   46.16ms   127.57ms      2.76  inference.to_numeric_downcast.time_downcast('int-list', None)
+    9.34μs   258.21μs     27.64  inference.to_numeric_downcast.time_downcast('int32', 'float')
+   78.55ms   148.25ms      1.89  inference.to_numeric_downcast.time_downcast('string-float', 'float')
+   80.55ms   148.59ms      1.84  inference.to_numeric_downcast.time_downcast('string-float', 'integer')
+   76.44ms   149.57ms      1.96  inference.to_numeric_downcast.time_downcast('string-float', 'signed')
+   76.39ms   148.51ms      1.94  inference.to_numeric_downcast.time_downcast('string-float', 'unsigned')
+   75.79ms   148.09ms      1.95  inference.to_numeric_downcast.time_downcast('string-float', None)
+  147.06ms   273.70ms      1.86  inference.to_numeric_downcast.time_downcast('string-int', 'float')
+  156.82ms   295.98ms      1.89  inference.to_numeric_downcast.time_downcast('string-int', 'integer')
+  157.41ms   281.58ms      1.79  inference.to_numeric_downcast.time_downcast('string-int', 'signed')
+  157.77ms   279.80ms      1.77  inference.to_numeric_downcast.time_downcast('string-int', 'unsigned')
+  146.58ms   269.75ms      1.84  inference.to_numeric_downcast.time_downcast('string-int', None)
+  148.72ms   266.83ms      1.79  inference.to_numeric_downcast.time_downcast('string-nint', 'float')
+  157.92ms   271.05ms      1.72  inference.to_numeric_downcast.time_downcast('string-nint', 'integer')
+  156.89ms   275.78ms      1.76  inference.to_numeric_downcast.time_downcast('string-nint', 'signed')
+  147.16ms   261.84ms      1.78  inference.to_numeric_downcast.time_downcast('string-nint', 'unsigned')
+  147.07ms   261.70ms      1.78  inference.to_numeric_downcast.time_downcast('string-nint', None)
+  717.85μs     3.68ms      5.13  sparse.sparse_arithmetic_block.time_sparse_addition
+  755.98μs     3.69ms      4.87  sparse.sparse_arithmetic_block.time_sparse_addition_zero
+  767.81μs     3.85ms      5.02  sparse.sparse_arithmetic_block.time_sparse_division
+  807.16μs     3.73ms      4.63  sparse.sparse_arithmetic_block.time_sparse_division_zero
+  599.17μs     3.53ms      5.89  sparse.sparse_arithmetic_block.time_sparse_make_union
+   13.96ms    40.68ms      2.91  sparse.sparse_arithmetic_int.time_sparse_addition_10percent
+   11.76ms    37.95ms      3.23  sparse.sparse_arithmetic_int.time_sparse_addition_10percent_zero
+    1.13ms     4.10ms      3.61  sparse.sparse_arithmetic_int.time_sparse_addition_1percent
+   14.54ms    41.21ms      2.83  sparse.sparse_arithmetic_int.time_sparse_division_10percent
+   12.29ms    38.60ms      3.14  sparse.sparse_arithmetic_int.time_sparse_division_10percent_zero
+    1.20ms     4.11ms      3.42  sparse.sparse_arithmetic_int.time_sparse_division_1percent
+    1.36ms     2.71ms      1.99  sparse.sparse_arithmetic_int.time_sparse_intersect
+   12.51ms    39.08ms      3.12  sparse.sparse_arithmetic_int.time_sparse_make_union
+   18.39μs    87.47μs      4.76  timeseries.AsOfDataFrame.time_asof_single_early

I don't think there are real blockers for 0.20, but the sparse (cc @sinhrks) and to_numeric downcast (cc @gfyoung) seem to be systematically slower

Metadata

Metadata

Assignees

No one assigned

    Labels

    PerformanceMemory or execution speed performance

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions