)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"60b3e53aa6f798f811d4df75fbaf5ae40c36c335","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d7dec5cf_85edf996","updated":"2024-10-01 03:37:48.000000000","message":"I think I could even do something similar on master...","commit_id":"71e3be7c5bb1c8ea675af9ba7e0ebe9e7076c2b9"}],"swift/common/utils/__init__.py":[{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"2ce31ed06bb7d4cc5ed48df2c6ef93c020f81deb","unresolved":true,"context_lines":[{"line_number":340,"context_line":""},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"def generate_unique_id():"},{"line_number":343,"context_line":"    result \u003d base64.urlsafe_b64encode(os.urandom(16))"},{"line_number":344,"context_line":"    if six.PY2:"},{"line_number":345,"context_line":"        return result"},{"line_number":346,"context_line":"    return result.decode(\u0027ascii\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"232a6955_c057d44c","line":343,"updated":"2024-09-26 22:52:09.000000000","message":"This function looks much faster and directly generates random bytes and encodes them which is faster and simpler. This provide 128 bits of randomness.\n\nbut what if we use:\n \n`return base64.urlsafe_b64encode(uuid.uuid4().bytes).rstrip(b\u0027\u003d\u0027)`\n\nIt will directly provide us with a 16-byte representation of and also is more efficient since it will avoid converting the UUID into a string. Also I am unsure which will be faster, my suggestion or yours","commit_id":"71e3be7c5bb1c8ea675af9ba7e0ebe9e7076c2b9"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"0dd285af6ba8ccbe4894dcbd7c148e3bf24de3c5","unresolved":true,"context_lines":[{"line_number":340,"context_line":""},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"def generate_unique_id():"},{"line_number":343,"context_line":"    result \u003d base64.urlsafe_b64encode(os.urandom(16))"},{"line_number":344,"context_line":"    if six.PY2:"},{"line_number":345,"context_line":"        return result"},{"line_number":346,"context_line":"    return result.decode(\u0027ascii\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"2c348b74_15f71ae4","line":343,"in_reply_to":"232a6955_c057d44c","updated":"2024-09-26 23:25:50.000000000","message":"On that note i tried all 3 variations with a simple testing script:\n\n```\nimport timeit\nimport uuid\nimport base64\nimport os\n\ndef generate_unique_id_bytes():\n    return base64.urlsafe_b64encode(uuid.uuid4().bytes).rstrip(b\u0027\u003d\u0027)\n\ndef generate_unique_id_random():\n    return base64.urlsafe_b64encode(os.urandom(16))\n\ndef generate_unique_id_uuid():\n    return base64.urlsafe_b64encode(str(uuid.uuid4()).encode(\u0027ascii\u0027))\n\n# Benchmark\nprint(\"generate_unique_id_bytes:\", timeit.timeit(generate_unique_id_bytes, number\u003d1000000))\nprint(\"generate_unique_id_random:\", timeit.timeit(generate_unique_id_random, number\u003d1000000))\nprint(\"generate_unique_id_uuid:\", timeit.timeit(generate_unique_id_uuid, number\u003d1000000))\n\n```\n\nand got the following results:\n```\ngenerate_unique_id_bytes: 1.7650843330011412\ngenerate_unique_id_random: 0.6596025830003782\ngenerate_unique_id_uuid: 2.296657375001814\n```\n\nit seems your method is the faster one but guarantees slightly less uniqueness since it isn\u0027t coming from a uuid lib!","commit_id":"71e3be7c5bb1c8ea675af9ba7e0ebe9e7076c2b9"}]}
