Replace IO manager's IntMap with a mutable hash table
I've written a patch that replaces the immutable !IntMap used by GHC.Event with a mutable hashtable, !IntTable.
There's a standalone version of the new data structure, complete with !QuickCheck tests and benchmarks, available on github. It's about 15x faster than !IntMap, and substantially simpler.
In practice, this translates to a small but measurable improvement in throughput (and presumably latency). I see a 3% to 10% bump in requests handled per second by the tiny acme-http http server when benchmarked using the weighttp load tester.
Trac metadata
Trac field | Value |
---|---|
Version | 7.7 |
Type | FeatureRequest |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | libraries/base |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | AndreasVoellmy, kazu-yamamoto, simonmar |
Operating system | |
Architecture |