mirror of
https://github.com/netwide-assembler/nasm
synced 2026-08-26 16:23:04 -04:00
Add prefetching on strings before hashing
Turns out that the hotspots of nasm are mainly on string hashing when accessing memory. A simple performance improvement is to prefetch the first cacheline of a string to be hashed. Ran 50 tests on an i9-12900 building intel-ipsec-mb that heavily uses nasm and improved wall clock build times from 56.1 seconds to 53.2 seconds or around 5% speed improvement. Signed-off-by: Colin Ian King <colin.i.king@intel.com>
This commit is contained in:
parent
6f48f8f7b7
commit
d6dc97dfc0
2 changed files with 6 additions and 0 deletions
|
|
@ -80,6 +80,8 @@ void **hash_findb(struct hash_table *head, const void *key,
|
|||
void **hash_find(struct hash_table *head, const char *key,
|
||||
struct hash_insert *insert)
|
||||
{
|
||||
__builtin_prefetch(key);
|
||||
|
||||
return hash_findb(head, key, strlen(key)+1, insert);
|
||||
}
|
||||
|
||||
|
|
@ -124,6 +126,8 @@ void **hash_findib(struct hash_table *head, const void *key, size_t keylen,
|
|||
void **hash_findi(struct hash_table *head, const char *key,
|
||||
struct hash_insert *insert)
|
||||
{
|
||||
__builtin_prefetch(key);
|
||||
|
||||
return hash_findib(head, key, strlen(key)+1, insert);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,6 +48,8 @@ strlist_add(struct strlist *list, const char *str)
|
|||
struct hash_insert hi;
|
||||
size_t size;
|
||||
|
||||
__builtin_prefetch(str);
|
||||
|
||||
if (!list)
|
||||
return NULL;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue