{"ScriptPreparationCode":"const recycleConcat = (left = new Uint8Array(), right = new Uint8Array()) =\u003E {\r\n const totalByteLength = left.byteLength \u002B right.byteLength\r\n const newView = new Uint8Array(\r\n left.buffer.byteLength \u003E= totalByteLength ? left.buffer :\r\n new ArrayBuffer(totalByteLength),\r\n 0,\r\n totalByteLength,\r\n )\r\nconsole.log(\u0027left\u0027, left, \u0027right\u0027, right, \u0027lbl\u0027, left.byteLength)\r\n newView.set(left)\r\n newView.set(right, left.byteLength)\r\n\r\n return newView\r\n}\r\n\r\nconst fpRecycleConcat = right =\u003E left =\u003E recycleConcat(left, right)\r\n\r\nconst asUint8 = ta =\u003E new Uint8Array(ta.buffer)\r\n\r\nconst pipe2 = (f, g) =\u003E x =\u003E g(f(x))\r\nconst pipe = (...fns) =\u003E fns.reduce(pipe2)\r\n\r\nconst TRANSMIT = 2\r\n\r\nconst createHeader = (id, type) =\u003E Uint8Array.of(\r\n ...asUint8(new Uint16Array([id])),\r\n type,\r\n)\r\n\r\nconst createTransmitMessageFp = (id, message) =\u003E {\r\n const header = createHeader(id, TRANSMIT)\r\n const messageLength = asUint8(Uint32Array.of(message.length))\r\n const transmitMessage = new Uint8Array(\r\n header.byteLength \u002B\r\n messageLength.length \u002B\r\n message.length,\r\n )\r\n\r\n return pipe(\r\n fpRecycleConcat(header),\r\n fpRecycleConcat(messageLength),\r\n fpRecycleConcat(message),\r\n )(transmitMessage.subarray(0, 0))\r\n}\r\n\r\nconst createTransmitMessageRaw = (id, message) =\u003E Uint8Array.of(\r\n ...createHeader(id, TRANSMIT),\r\n ...asUint8(Uint32Array.of(message.length * (message.byteLength || 1))),\r\n ...asUint8(message)\r\n)","TestCases":[{"Name":"bench-fp","Code":"for (let i = 0; i \u003C 100000; i\u002B\u002B) {\r\n\tcreateTransmitMessageFp(1, Uint8Array.of(i))\r\n}","IsDeferred":false},{"Name":"bench-raw","Code":"for (let i = 0; i \u003C 100000; i\u002B\u002B) {\r\n\tcreateTransmitMessageRaw(1, Uint8Array.of(i))\r\n}","IsDeferred":false}]}