Ticket #4280 (closed proposal: fixed)

Opened 3 years ago

Last modified 3 years ago

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?key=0AurLfcdFg73_dGZKN1hONFdyVlFudTh2a3BuSTc4NXc&oid=2&zx=yh9l2q-h6cvi1

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

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

Change History

Changed 3 years ago by tibbe

Changed 3 years ago by milan

  • blocking 4312 added

Changed 3 years ago by milan

  • blocking 4313 added

Changed 3 years ago by milan

  • status changed from new to closed
  • resolution set to fixed

Applied.

Note: See TracTickets for help on using tickets.