2017-05-22 20:55 GMT+02:00 Thomas Helland <thomashellan...@gmail.com>: > This should prove benefitial in the common case of inserting > and not rewriting anything. > > V2: Use hash_instr directly instead of going through the function > pointer embedded in the set
Threw some sysprof profiles at this patch. This should theoretically be the "big winner" in this patch series, plus the string_to_uint_map patch. The rationale being that the slower the hashing, the more this will benefit us. Results from sysprof: Before: nir_opt_cse 3.68% hash_instr (on search) 0.28% hash_instr (on insert) 0.26% After: nir_opt_cse 3.31% hash_instr 0.28% So we see the 0.26% spent in hash_instr on insert going away, as we should expect, but interestingly the cumulative time spent in nir_opt_cse drops 0.37% of the total, down to 3.31%. For fun I also fired up the quadratic probing hash set that I still haven't gotten around to finalizing. That brings us down even further, bringing us under 3% of total for nir_opt_cse. Shout out if there's any more tests I should do. > --- > src/compiler/nir/nir_instr_set.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/src/compiler/nir/nir_instr_set.c > b/src/compiler/nir/nir_instr_set.c > index 9cb9ed43e8..bdc3b02173 100644 > --- a/src/compiler/nir/nir_instr_set.c > +++ b/src/compiler/nir/nir_instr_set.c > @@ -508,7 +508,10 @@ nir_instr_set_add_or_rewrite(struct set *instr_set, > nir_instr *instr) > if (!instr_can_rewrite(instr)) > return false; > > - struct set_entry *entry = _mesa_set_search(instr_set, instr); > + uint32_t hash = hash_instr(instr); > + struct set_entry *entry = > + _mesa_set_search_pre_hashed(instr_set, hash, instr); > + > if (entry) { > nir_ssa_def *def = nir_instr_get_dest_ssa_def(instr); > nir_instr *match = (nir_instr *) entry->key; > @@ -526,7 +529,7 @@ nir_instr_set_add_or_rewrite(struct set *instr_set, > nir_instr *instr) > return true; > } > > - _mesa_set_add(instr_set, instr); > + _mesa_set_add_pre_hashed(instr_set, hash, instr); > return false; > } > > -- > 2.13.0 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev