Opened 4 years ago

Closed 4 years ago

#4280 closed proposal (fixed)

Proposal: Performance improvements for Data.Set

Reported by: tibbe Owned by:
Priority: normal Milestone:
Component: libraries (other) Version: 6.12.3
Keywords: Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: Runtime performance bug Difficulty:
Test Case: Blocked By:
Blocking: #4312, #4313 Related Tickets:

Description

Following on from ticket #4277 here is a similar patch for Data.Set.

This proposal provides a patch that improves performance for many parts of the API. Three standard techniques are applied to the code:

  • Worker/Wrapper? transformations of recursive functions with constant arguments (aka. the static argument transformation).
  • Explicit inlining of wrapper functions.
  • Explicit strictness of keys to functions.

Three complementary, but orthogonal patches are provided.

  • Add a testsuite, with coverage data (currently 51% of top level functions, and all core functions).
  • Add a micro-benchmark suite based on Criterion, for empirical evidence of improvements to each function.
  • The optimization patch itself.

All 3 patches should be applied, under this proposal.

The benchmark results are relatively clear:

32% faster on OS X 10.5.8 on 2 GHz Core 2 Duo

https://spreadsheets.google.com/oimg

The consideration period is 3 weeks (before ICFP).

Work carried out over 28/29th August, 2010 in Utrecht, NL, by Johan Tibell and Don Stewart.

Attachments (1)

data-set-performance.dpatch (28.6 KB) - added by tibbe 4 years ago.

Download all attachments as: .zip

Change History (4)

Changed 4 years ago by tibbe

comment:1 Changed 4 years ago by milan

  • Blocking 4312 added

comment:2 Changed 4 years ago by milan

  • Blocking 4313 added

comment:3 Changed 4 years ago by milan

  • Resolution set to fixed
  • Status changed from new to closed

Applied.

Note: See TracTickets for help on using tickets.