rust/src/librustc/middle/trans
Alex Crichton bec7b766fb 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  |
2014-03-06 17:45:48 -08:00
..
_match.rs debuginfo: Re-introduce the notion of line-table-only debuginfo. 2014-03-06 07:57:18 +01:00
adt.rs Fix ICE on statics with fancy nullable enums. 2014-03-05 21:23:33 -08:00
asm.rs Rename all variables that have uppercase characters in their names to use only lowercase characters 2014-03-04 21:23:36 -05:00
base.rs rustc: Move to FNV hashing for node/def ids 2014-03-06 17:45:48 -08:00
basic_block.rs
build.rs Rename all variables that have uppercase characters in their names to use only lowercase characters 2014-03-04 21:23:36 -05:00
builder.rs Rename struct fields with uppercase characters in their names to use lowercase 2014-03-04 21:23:37 -05:00
cabi_arm.rs
cabi_mips.rs
cabi_x86_64.rs
cabi_x86.rs
cabi.rs
callee.rs Allow overloading explicit dereferences. 2014-03-05 00:26:51 +02:00
cleanup.rs Make visible types public in rustc 2014-03-02 15:26:39 -08:00
closure.rs debuginfo: Re-introduce the notion of line-table-only debuginfo. 2014-03-06 07:57:18 +01:00
common.rs rustc: Move to FNV hashing for node/def ids 2014-03-06 17:45:48 -08:00
consts.rs Rename all variables that have uppercase characters in their names to use only lowercase characters 2014-03-04 21:23:36 -05:00
context.rs rustc: Move to FNV hashing for node/def ids 2014-03-06 17:45:48 -08:00
controlflow.rs debuginfo: Re-introduce the notion of line-table-only debuginfo. 2014-03-06 07:57:18 +01:00
datum.rs Transition to new Hash, removing IterBytes and std::to_bytes. 2014-02-24 07:44:10 +11:00
debuginfo.rs debuginfo: Re-introduce the notion of line-table-only debuginfo. 2014-03-06 07:57:18 +01:00
doc.rs fix typos with with repeated words, just like this sentence. 2014-03-06 20:19:14 +09:00
expr.rs rustc: Move to FNV hashing for node/def ids 2014-03-06 17:45:48 -08:00
foreign.rs Rename struct fields with uppercase characters in their names to use lowercase 2014-03-04 21:23:37 -05:00
glue.rs
inline.rs librustc: Fix errors arising from the automated ~[T] conversion 2014-03-01 22:40:53 -08:00
intrinsic.rs rustc: Streamline error messages for i18n, using plural whenever possible. 2014-03-04 16:41:57 +09:00
llrepr.rs
machine.rs
macros.rs
meth.rs Replace callee_id with information stored in method_map. 2014-02-26 16:06:45 +02:00
mod.rs
monomorphize.rs librustc: Fix errors arising from the automated ~[T] conversion 2014-03-01 22:40:53 -08:00
reflect.rs Allow overloading explicit dereferences. 2014-03-05 00:26:51 +02:00
tvec.rs
type_.rs std: Change assert_eq!() to use {} instead of {:?} 2014-02-28 23:01:54 -08:00
type_of.rs
value.rs
write_guard.rs