{"ScriptPreparationCode":"const testData = new Uint8Array(216);\r\ncrypto.getRandomValues(testData);\r\n\r\nasync function webCryptoHash(data) {\r\n const hash = await crypto.subtle.digest(\u0027SHA-1\u0027, data);\r\n return new Uint8Array(hash);\r\n}\r\n\r\n// 2. FNV-1a 32-bit (extremely fast, non-cryptographic)\r\nfunction fnv1a32(data) {\r\n let hash = 0x811c9dc5;\r\n for (let i = 0; i \u003C data.length; i\u002B\u002B) {\r\n hash ^= data[i];\r\n hash \u002B= (hash \u003C\u003C 1) \u002B (hash \u003C\u003C 4) \u002B (hash \u003C\u003C 7) \u002B (hash \u003C\u003C 8) \u002B (hash \u003C\u003C 24);\r\n }\r\n return hash \u003E\u003E\u003E 0;\r\n}\r\n\r\n// 3. xxHash-like implementation (fast, non-cryptographic)\r\nfunction xxHash(data) {\r\n const PRIME32_1 = 0x9e3779b1;\r\n const PRIME32_2 = 0x85ebca77;\r\n const PRIME32_3 = 0xc2b2ae3d;\r\n \r\n let h = 0;\r\n \r\n for (let i = 0; i \u003C data.length; i \u002B= 4) {\r\n const chunk = (data[i] || 0) |\r\n ((data[i \u002B 1] || 0) \u003C\u003C 8) |\r\n ((data[i \u002B 2] || 0) \u003C\u003C 16) |\r\n ((data[i \u002B 3] || 0) \u003C\u003C 24);\r\n \r\n h = Math.imul(h \u002B Math.imul(chunk, PRIME32_1), PRIME32_2);\r\n }\r\n \r\n return h \u003E\u003E\u003E 0;\r\n}\r\n\r\n// 4. MurmurHash3-like implementation (fast, non-cryptographic)\r\nfunction murmur3(data) {\r\n const c1 = 0xcc9e2d51;\r\n const c2 = 0x1b873593;\r\n let h1 = 0;\r\n\r\n for (let i = 0; i \u003C data.length; i \u002B= 4) {\r\n let k1 = (data[i] || 0) |\r\n ((data[i \u002B 1] || 0) \u003C\u003C 8) |\r\n ((data[i \u002B 2] || 0) \u003C\u003C 16) |\r\n ((data[i \u002B 3] || 0) \u003C\u003C 24);\r\n\r\n k1 = Math.imul(k1, c1);\r\n k1 = (k1 \u003C\u003C 15) | (k1 \u003E\u003E\u003E 17);\r\n k1 = Math.imul(k1, c2);\r\n\r\n h1 ^= k1;\r\n h1 = (h1 \u003C\u003C 13) | (h1 \u003E\u003E\u003E 19);\r\n h1 = Math.imul(h1, 5) \u002B 0xe6546b64;\r\n }\r\n\r\n h1 ^= data.length;\r\n h1 ^= h1 \u003E\u003E\u003E 16;\r\n h1 = Math.imul(h1, 0x85ebca6b);\r\n h1 ^= h1 \u003E\u003E\u003E 13;\r\n h1 = Math.imul(h1, 0xc2b2ae35);\r\n h1 ^= h1 \u003E\u003E\u003E 16;\r\n\r\n return h1 \u003E\u003E\u003E 0;\r\n}\r\n\r\nwindow.testData = testData;\r\nwindow.webCryptoHash = webCryptoHash;\r\nwindow.fnv1a32 = fnv1a32;\r\nwindow.xxHash = xxHash;\r\nwindow.murmur3 = murmur3;","TestCases":[{"Name":"webCryptoHash","Code":"webCryptoHash(testData).then(() =\u003E {\r\n\tdeferred.resolve();\r\n});","IsDeferred":true},{"Name":"fnv1a32","Code":"fnv1a32(testData);","IsDeferred":false},{"Name":"xxHash","Code":"xxHash(testData);","IsDeferred":false},{"Name":"murmur3","Code":"murmur3(testData);","IsDeferred":false}]}