Skip to content

Commit

Permalink
⚡optimized daytodate
Browse files Browse the repository at this point in the history
  • Loading branch information
atarpara committed Jan 5, 2024
1 parent b3d4ad9 commit 8fe3338
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 45 deletions.
88 changes: 44 additions & 44 deletions .gas-snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -12,55 +12,55 @@ Base64Test:testBase64EncodeToStringWithSinglePadding() (gas: 1636)
Base64Test:testBase64WordBoundary() (gas: 12511)
Base64Test:test__codesize() (gas: 7802)
CREATE3Test:testDeployERC20() (gas: 761926)
CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 256, μ: 805442, ~: 808154)
CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 256, μ: 805675, ~: 808154)
CREATE3Test:testDeployedUpperBitsSafeForPlainSolidity() (gas: 657)
CREATE3Test:testDoubleDeployDifferentBytecodeReverts() (gas: 96899279)
CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 256, μ: 96880120, ~: 96880005)
CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 256, μ: 96880127, ~: 96880005)
CREATE3Test:testDoubleDeploySameBytecodeReverts() (gas: 96889159)
CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 256, μ: 96881058, ~: 96881007)
CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 256, μ: 96881045, ~: 96881005)
CREATE3Test:test__codesize() (gas: 15337)
DateTimeLibTest:testAddSubDiffDays(uint256,uint256) (runs: 256, μ: 4037, ~: 4074)
DateTimeLibTest:testAddSubDiffHours(uint256,uint256) (runs: 256, μ: 3980, ~: 3965)
DateTimeLibTest:testAddSubDiffMinutes(uint256,uint256) (runs: 256, μ: 3978, ~: 3954)
DateTimeLibTest:testAddSubDiffMonths(uint256,uint256) (runs: 256, μ: 7089, ~: 7130)
DateTimeLibTest:testAddSubDiffSeconds(uint256,uint256) (runs: 256, μ: 3620, ~: 3608)
DateTimeLibTest:testAddSubDiffYears(uint256,uint256) (runs: 256, μ: 6652, ~: 6695)
DateTimeLibTest:testDateTimeArithmeticReverts() (gas: 4597)
DateTimeLibTest:testDateTimeMaxSupported() (gas: 2502)
DateTimeLibTest:testDateTimeToAndFroTimestamp((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 3973, ~: 4050)
DateTimeLibTest:testDateToAndFroEpochDay((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2467, ~: 2440)
DateTimeLibTest:testDateToAndFroEpochDay() (gas: 865464)
DateTimeLibTest:testDateToAndFroTimestamp() (gas: 909205)
DateTimeLibTest:testAddSubDiffDays(uint256,uint256) (runs: 256, μ: 4152, ~: 4139)
DateTimeLibTest:testAddSubDiffHours(uint256,uint256) (runs: 256, μ: 4099, ~: 4068)
DateTimeLibTest:testAddSubDiffMinutes(uint256,uint256) (runs: 256, μ: 4097, ~: 4074)
DateTimeLibTest:testAddSubDiffMonths(uint256,uint256) (runs: 256, μ: 7196, ~: 7187)
DateTimeLibTest:testAddSubDiffSeconds(uint256,uint256) (runs: 256, μ: 3740, ~: 3728)
DateTimeLibTest:testAddSubDiffYears(uint256,uint256) (runs: 256, μ: 6760, ~: 6752)
DateTimeLibTest:testDateTimeArithmeticReverts() (gas: 4595)
DateTimeLibTest:testDateTimeMaxSupported() (gas: 2881)
DateTimeLibTest:testDateTimeToAndFroTimestamp((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 4005, ~: 4090)
DateTimeLibTest:testDateToAndFroEpochDay((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2464, ~: 2444)
DateTimeLibTest:testDateToAndFroEpochDay() (gas: 866488)
DateTimeLibTest:testDateToAndFroTimestamp() (gas: 908693)
DateTimeLibTest:testDateToEpochDay() (gas: 1603)
DateTimeLibTest:testDateToEpochDayDifferential((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2209, ~: 2178)
DateTimeLibTest:testDateToEpochDayDifferential2((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2132, ~: 2105)
DateTimeLibTest:testDateToEpochDayDifferential((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2202, ~: 2178)
DateTimeLibTest:testDateToEpochDayDifferential2((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2125, ~: 2105)
DateTimeLibTest:testDateToEpochDayGas() (gas: 756479)
DateTimeLibTest:testDateToEpochDayGas2() (gas: 759345)
DateTimeLibTest:testDayOfWeek() (gas: 175297)
DateTimeLibTest:testDaysInMonth() (gas: 1204)
DateTimeLibTest:testDaysInMonth(uint256,uint256) (runs: 256, μ: 1032, ~: 1051)
DateTimeLibTest:testDaysToDate() (gas: 1958)
DateTimeLibTest:testEpochDayToDate(uint256) (runs: 256, μ: 1019, ~: 1019)
DateTimeLibTest:testEpochDayToDateDifferential(uint256) (runs: 256, μ: 1813, ~: 1762)
DateTimeLibTest:testEpochDayToDateDifferential2(uint256) (runs: 256, μ: 1751, ~: 1683)
DateTimeLibTest:testEpochDayToDateGas() (gas: 339723)
DateTimeLibTest:testDaysInMonth(uint256,uint256) (runs: 256, μ: 1036, ~: 1060)
DateTimeLibTest:testDaysToDate() (gas: 8377)
DateTimeLibTest:testEpochDayToDate(uint256) (runs: 256, μ: 1045, ~: 1045)
DateTimeLibTest:testEpochDayToDateDifferential(uint256) (runs: 256, μ: 1815, ~: 1766)
DateTimeLibTest:testEpochDayToDateDifferential2(uint256) (runs: 256, μ: 1753, ~: 1687)
DateTimeLibTest:testEpochDayToDateGas() (gas: 340747)
DateTimeLibTest:testEpochDayToDateGas2() (gas: 357444)
DateTimeLibTest:testIsLeapYear() (gas: 741)
DateTimeLibTest:testIsLeapYear(uint256) (runs: 256, μ: 521, ~: 495)
DateTimeLibTest:testIsLeapYear(uint256) (runs: 256, μ: 520, ~: 495)
DateTimeLibTest:testIsSupportedDateFalse() (gas: 1651)
DateTimeLibTest:testIsSupportedDateTime((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2826, ~: 2838)
DateTimeLibTest:testIsSupportedDateTime((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 256, μ: 2840, ~: 2842)
DateTimeLibTest:testIsSupportedDateTrue() (gas: 670)
DateTimeLibTest:testIsSupportedEpochDayFalse() (gas: 597)
DateTimeLibTest:testIsSupportedEpochDayTrue() (gas: 305)
DateTimeLibTest:testIsSupportedTimestampFalse() (gas: 599)
DateTimeLibTest:testIsSupportedTimestampTrue() (gas: 304)
DateTimeLibTest:testIsWeekEnd(uint256) (runs: 256, μ: 728, ~: 662)
DateTimeLibTest:testIsWeekEnd(uint256) (runs: 256, μ: 725, ~: 662)
DateTimeLibTest:testMondayTimestamp() (gas: 1106)
DateTimeLibTest:testMondayTimestamp(uint256) (runs: 256, μ: 731, ~: 650)
DateTimeLibTest:testMondayTimestamp(uint256) (runs: 256, μ: 728, ~: 650)
DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp() (gas: 12031)
DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp(uint256,uint256,uint256,uint256) (runs: 256, μ: 3437, ~: 3454)
DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp(uint256,uint256,uint256,uint256) (runs: 256, μ: 3461, ~: 3500)
DateTimeLibTest:testWeekday() (gas: 705)
DateTimeLibTest:test__codesize() (gas: 20051)
DateTimeLibTest:test__codesize() (gas: 20080)
DynamicBufferLibTest:testClear(uint256) (runs: 256, μ: 170988, ~: 171109)
DynamicBufferLibTest:testDynamicBuffer(bytes[],uint256) (runs: 256, μ: 1010754, ~: 905804)
DynamicBufferLibTest:testDynamicBuffer(uint256) (runs: 256, μ: 959302, ~: 732153)
Expand Down Expand Up @@ -221,21 +221,21 @@ ERC2981Test:testRoyaltyOverflowCheckDifferential(uint256,uint256) (runs: 256, μ
ERC2981Test:testSetAndGetRoyaltyInfo(uint256) (runs: 256, μ: 107649, ~: 104801)
ERC2981Test:test__codesize() (gas: 8419)
ERC4337FactoryTest:testCreateAccountRepeatedDeployment() (gas: 149757)
ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 256, μ: 171755, ~: 171681)
ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 256, μ: 134021, ~: 139900)
ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 256, μ: 171759, ~: 171617)
ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 256, μ: 132085, ~: 139899)
ERC4337FactoryTest:test__codesize() (gas: 13520)
ERC4337Test:testCdFallback() (gas: 443989)
ERC4337Test:testCdFallback2() (gas: 1140699)
ERC4337Test:testDelegateExecute() (gas: 369570)
ERC4337Test:testDelegateExecute(uint256) (runs: 256, μ: 355322, ~: 344555)
ERC4337Test:testDelegateExecute(uint256) (runs: 256, μ: 354987, ~: 344555)
ERC4337Test:testDelegateExecuteRevertsIfOwnerSlotValueChanged() (gas: 319282)
ERC4337Test:testDepositFunctions() (gas: 502955)
ERC4337Test:testDirectStorage() (gas: 70413)
ERC4337Test:testDisableInitializerForImplementation() (gas: 1177324)
ERC4337Test:testETHReceived() (gas: 16584)
ERC4337Test:testExecute() (gas: 382786)
ERC4337Test:testExecuteBatch() (gas: 692605)
ERC4337Test:testExecuteBatch(uint256) (runs: 256, μ: 526856, ~: 368483)
ERC4337Test:testExecuteBatch(uint256) (runs: 256, μ: 528651, ~: 368322)
ERC4337Test:testInitializer() (gas: 285192)
ERC4337Test:testIsValidSignature() (gas: 111663)
ERC4337Test:testIsValidSignaturePersonalSign() (gas: 96270)
Expand Down Expand Up @@ -266,18 +266,18 @@ ERC4626Test:testWithdrawWithNotEnoughUnderlyingAmountReverts() (gas: 144074)
ERC4626Test:testWithdrawZero() (gas: 52807)
ERC4626Test:test__codesize() (gas: 41067)
ERC6551Test:testCdFallback() (gas: 894557)
ERC6551Test:testDeployERC6551(uint256) (runs: 256, μ: 171249, ~: 168738)
ERC6551Test:testDeployERC6551(uint256) (runs: 256, μ: 171200, ~: 168739)
ERC6551Test:testDeployERC6551Proxy() (gas: 80751)
ERC6551Test:testExecute() (gas: 507855)
ERC6551Test:testExecuteBatch() (gas: 816977)
ERC6551Test:testExecuteBatch(uint256) (runs: 256, μ: 611168, ~: 483186)
ERC6551Test:testExecuteBatch(uint256) (runs: 256, μ: 624047, ~: 483289)
ERC6551Test:testInitializeERC6551ProxyImplementation() (gas: 189801)
ERC6551Test:testIsValidSignature() (gas: 187612)
ERC6551Test:testOnERC1155BatchReceived() (gas: 1526542)
ERC6551Test:testOnERC1155Received() (gas: 1523898)
ERC6551Test:testOnERC721Received() (gas: 1447973)
ERC6551Test:testOnERC721ReceivedCycles() (gas: 1711044)
ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 256, μ: 448611, ~: 454014)
ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 256, μ: 449335, ~: 454582)
ERC6551Test:testSupportsInterface() (gas: 169387)
ERC6551Test:testUpgrade() (gas: 1154845)
ERC6551Test:test__codesize() (gas: 47762)
Expand Down Expand Up @@ -805,17 +805,17 @@ LibStringTest:testToStringZeroBrutalized() (gas: 591165)
LibStringTest:testToStringZeroRightPadded(uint256) (runs: 256, μ: 743103, ~: 591356)
LibStringTest:test__codesize() (gas: 42684)
LibZipTest:testCdCompress() (gas: 156007)
LibZipTest:testCdCompressDecompress(bytes) (runs: 256, μ: 748583, ~: 648337)
LibZipTest:testCdCompressDecompress(uint256) (runs: 256, μ: 738397, ~: 694142)
LibZipTest:testCdCompressDecompress(bytes) (runs: 256, μ: 721573, ~: 645644)
LibZipTest:testCdCompressDecompress(uint256) (runs: 256, μ: 764757, ~: 695927)
LibZipTest:testCdDecompressOnInvalidInput() (gas: 26080)
LibZipTest:testCdFallback() (gas: 5674556)
LibZipTest:testCdFallback(bytes,uint256) (runs: 256, μ: 1179235, ~: 1039556)
LibZipTest:testCdFallbackDecompressor(bytes) (runs: 256, μ: 121266, ~: 117358)
LibZipTest:testCdFallbackDecompressor(uint256) (runs: 256, μ: 164864, ~: 154396)
LibZipTest:testCdFallbackMaskTrick(uint256,uint256) (runs: 256, μ: 687, ~: 663)
LibZipTest:testDecompressWontRevert(bytes) (runs: 256, μ: 744029, ~: 627266)
LibZipTest:testCdFallback(bytes,uint256) (runs: 256, μ: 1182891, ~: 1048690)
LibZipTest:testCdFallbackDecompressor(bytes) (runs: 256, μ: 121226, ~: 117182)
LibZipTest:testCdFallbackDecompressor(uint256) (runs: 256, μ: 169527, ~: 154741)
LibZipTest:testCdFallbackMaskTrick(uint256,uint256) (runs: 256, μ: 689, ~: 663)
LibZipTest:testDecompressWontRevert(bytes) (runs: 256, μ: 755084, ~: 628619)
LibZipTest:testFlzCompressDecompress() (gas: 1911942)
LibZipTest:testFlzCompressDecompress(bytes) (runs: 256, μ: 845692, ~: 679612)
LibZipTest:testFlzCompressDecompress(bytes) (runs: 256, μ: 834315, ~: 677412)
LibZipTest:testFlzCompressDecompress2() (gas: 941136)
LibZipTest:test__codesize() (gas: 21701)
MerkleProofLibTest:testEmptyCalldataHelpers() (gas: 1086)
Expand Down
2 changes: 1 addition & 1 deletion src/utils/DateTimeLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ library DateTimeLib {
let doy := sub(doe, sub(add(mul(365, yoe), shr(2, yoe)), div(yoe, 100)))
let mp := div(add(mul(5, doy), 2), 153)
day := add(sub(doy, shr(11, add(mul(mp, 62719), 769))), 1)
month := sub(add(mp, 3), mul(gt(mp, 9), 12))
month := byte(mp, shl(160, 0x030405060708090a0b0c0102))
year := add(add(yoe, mul(div(epochDay, 146097), 400)), lt(month, 3))
}
}
Expand Down

0 comments on commit 8fe3338

Please sign in to comment.