about summary refs log tree commit diff
path: root/src/rustllvm/ExecutionEngineWrapper.cpp
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2014-02-28 14:34:26 -0800
committerAlex Crichton <alex@alexcrichton.com>2014-03-06 17:45:48 -0800
commitbec7b766fbbc9b56a1608e2573390e3894519840 (patch)
treee867bdfab8c090f94d1aee36ae96f5f86e22fbdf /src/rustllvm/ExecutionEngineWrapper.cpp
parent0e95b086db515386faf41549b490515a540165b1 (diff)
downloadrust-bec7b766fbbc9b56a1608e2573390e3894519840.tar.gz
rust-bec7b766fbbc9b56a1608e2573390e3894519840.zip
rustc: Move to FNV hashing for node/def ids
This leverages the new hashing framework and hashmap implementation to provide a
much speedier hashing algorithm for node ids and def ids. The hash algorithm
used is currentl FNV hashing, but it's quite easy to swap out.

I originally implemented hashing as the identity function, but this actually
ended up in slowing down rustc compiling libstd from 8s to 13s. I would suspect
that this is a result of a large number of collisions.

With FNV hashing, we get these timings (compiling with --no-trans, in seconds):

|           |  before  |  after  |
|-----------|---------:|--------:|
| libstd    |   8.324  |  6.703  |
| stdtest   |  47.674  | 46.857  |
| libsyntax |   9.918  |  8.400  |
Diffstat (limited to 'src/rustllvm/ExecutionEngineWrapper.cpp')
0 files changed, 0 insertions, 0 deletions