cache the length of array rather than iterate every time for vaaKeys

This commit is contained in:
derpy-duck 2023-06-09 16:11:35 +00:00
parent a9172379c5
commit d61380a9b0
1 changed files with 4 additions and 3 deletions

View File

@ -163,8 +163,9 @@ library WormholeRelayerSerde {
returns (bytes memory encoded)
{
assert(vaaKeys.length < type(uint8).max);
encoded = abi.encodePacked(uint8(vaaKeys.length));
for (uint256 i = 0; i < vaaKeys.length;) {
uint8 length = uint8(vaaKeys.length);
encoded = abi.encodePacked(length);
for (uint256 i = 0; i < length;) {
encoded = abi.encodePacked(encoded, encodeVaaKey(vaaKeys[i]));
unchecked {
++i;
@ -179,7 +180,7 @@ library WormholeRelayerSerde {
uint8 vaaKeysLength;
(vaaKeysLength, offset) = encoded.asUint8Unchecked(startOffset);
vaaKeys = new VaaKey[](vaaKeysLength);
for (uint256 i = 0; i < vaaKeys.length;) {
for (uint256 i = 0; i < vaaKeysLength;) {
(vaaKeys[i], offset) = decodeVaaKey(encoded, offset);
unchecked {
++i;