[Mesa-dev] [PATCH 1/2] glsl: Don't rehash the values when copying to new table
Vladislav Egorov
vegorov180 at gmail.com
Fri Dec 30 03:53:52 UTC 2016
I've looked into it recently (I'm working on series of many various
trivial optimizations)
and it's faster to just memcpy() it. Just throwing out superfluous
hashing still keeps slow
hash-table insertion around -- with resizing, rehashing, memory
allocation/deallocation, internal
hash-function through integer division, collisions and so on. It
produces a nice speed improvement
actually. It's possible to explore approaches without any copying at
LOOP/IF entering at all,
but I am not sure it will improve performance.
30.12.2016 02:49, Thomas Helland пишет:
> Really, we should have some kind of function for copying the whole table,
> but this will work for now.
> ---
> src/compiler/glsl/opt_copy_propagation.cpp | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/src/compiler/glsl/opt_copy_propagation.cpp b/src/compiler/glsl/opt_copy_propagation.cpp
> index 247c498..e9f82e0 100644
> --- a/src/compiler/glsl/opt_copy_propagation.cpp
> +++ b/src/compiler/glsl/opt_copy_propagation.cpp
> @@ -210,7 +210,8 @@ ir_copy_propagation_visitor::handle_if_block(exec_list *instructions)
> /* Populate the initial acp with a copy of the original */
> struct hash_entry *entry;
> hash_table_foreach(orig_acp, entry) {
> - _mesa_hash_table_insert(acp, entry->key, entry->data);
> + _mesa_hash_table_insert_pre_hashed(acp, entry->hash,
> + entry->key, entry->data);
> }
>
> visit_list_elements(this, instructions);
> @@ -259,7 +260,8 @@ ir_copy_propagation_visitor::handle_loop(ir_loop *ir, bool keep_acp)
> if (keep_acp) {
> struct hash_entry *entry;
> hash_table_foreach(orig_acp, entry) {
> - _mesa_hash_table_insert(acp, entry->key, entry->data);
> + _mesa_hash_table_insert_pre_hashed(acp, entry->hash,
> + entry->key, entry->data);
> }
> }
>
More information about the mesa-dev
mailing list