From 877bc5c50132e662860102abcb00be0646819780 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Mon, 8 Mar 2021 16:05:34 -0600 Subject: [PATCH] Use (hopefully) faster hash functions in KeyBuilder for int, float --- pytools/persistent_dict.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pytools/persistent_dict.py b/pytools/persistent_dict.py index 9e961a3..7836b44 100644 --- a/pytools/persistent_dict.py +++ b/pytools/persistent_dict.py @@ -263,14 +263,21 @@ class KeyBuilder: @staticmethod def update_for_int(key_hash, key): - key_hash.update(str(key).encode("utf8")) + sz = 8 + while True: + try: + key_hash.update(key.to_bytes(sz, byteorder="little", signed=True)) + return + except OverflowError: + sz *= 2 - update_for_long = update_for_int - update_for_bool = update_for_int + @staticmethod + def update_for_bool(key_hash, key): + key_hash.update(str(key).encode("utf8")) @staticmethod def update_for_float(key_hash, key): - key_hash.update(repr(key).encode("utf8")) + key_hash.update(key.hex().encode("utf8")) @staticmethod def update_for_str(key_hash, key): -- GitLab