Skip to content

Conversation

Uzlopak
Copy link

@Uzlopak Uzlopak commented Aug 3, 2025

I guess you dislike only Template String Literals and the Map for first thursdays. Also ignore the dateFormatter class, I want to propose it to be integrated to pino-pretty. I guess you want to "pick" specific changes. The benchmarks are not very precise, because my laptop is at powersavings mode with 18% battery, while i am programming in bed and cant move and type with one hand, while my toddler is taking a nap on my shoulder...
before:

simple benchmark
┌─────────┬───────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name             │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼───────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0       │ 'd''1038.2 ± 0.61%''989.00 ± 23.00''995725 ± 0.05%''1011122 ± 23004'      │ 96317   │
│ 1       │ 'W''2828.8 ± 4.88%''2625.0 ± 28.00''375762 ± 0.07%''380952 ± 4107'        │ 35351   │
│ 2       │ 'o''1307.2 ± 2.18%''1164.0 ± 28.00''840712 ± 0.06%''859107 ± 20401'       │ 76499   │
│ 3       │ 'N''1034.9 ± 7.96%''881.00 ± 25.00''1110839 ± 0.06%''1135074 ± 31787'      │ 96630   │
│ 4       │ 'H''1099.9 ± 3.94%''1018.0 ± 26.00''965354 ± 0.05%''982318 ± 24731'       │ 90919   │
│ 5       │ 'S''1385.8 ± 0.98%''1295.0 ± 23.00''757465 ± 0.06%''772201 ± 13475'       │ 72163   │
│ 6       │ 'L''1205.6 ± 5.20%''1088.0 ± 21.00''901844 ± 0.06%''919118 ± 18089'       │ 82948   │
│ 7       │ 'yy''1131.3 ± 5.88%''997.00 ± 23.00''981878 ± 0.06%''1003009 ± 22632'      │ 88391   │
│ 8       │ 'yyyy''1109.4 ± 1.89%''1012.0 ± 25.00''968772 ± 0.06%''988142 ± 24003'       │ 90141   │
│ 9       │ 'default''3843.1 ± 1.75%''3556.0 ± 58.00''276088 ± 0.12%''281215 ± 4590'        │ 26021   │
│ 10      │ 'shortDate''1875.6 ± 0.88%''1777.0 ± 25.00''556189 ± 0.06%''562746 ± 8030'        │ 53317   │
│ 11      │ 'paddedShortDate''1985.3 ± 1.47%''1892.0 ± 27.00''521735 ± 0.06%''528541 ± 7436'        │ 50369   │
│ 12      │ 'mediumDate''2108.2 ± 1.65%''1983.0 ± 22.00''497426 ± 0.07%''504286 ± 5657'        │ 47434   │
│ 13      │ 'longDate''2162.4 ± 1.52%''2017.0 ± 31.00''489032 ± 0.07%''495786 ± 7739'        │ 46245   │
│ 14      │ 'fullDate''2597.2 ± 2.14%''2413.0 ± 32.00''408757 ± 0.08%''414422 ± 5424'        │ 38504   │
│ 15      │ 'isoDate''2003.6 ± 1.63%''1897.0 ± 25.00''518828 ± 0.06%''527148 ± 7040'        │ 49910   │
│ 16      │ 'shortTime''2059.4 ± 3.28%''1874.0 ± 28.00''523983 ± 0.08%''533618 ± 7856'        │ 48574   │
│ 17      │ 'mediumTime''2407.8 ± 1.70%''2231.0 ± 31.00''439856 ± 0.08%''448229 ± 6143'        │ 41532   │
│ 18      │ 'longTime''4232.0 ± 1.90%''4009.0 ± 40.00''246238 ± 0.10%''249439 ± 2514'        │ 23630   │
│ 19      │ 'isoTime''2007.0 ± 1.67%''1837.0 ± 27.00''534158 ± 0.08%''544366 ± 7885'        │ 49826   │
│ 20      │ 'isoDateTime''4307.2 ± 3.57%''3900.0 ± 48.00''250878 ± 0.14%''256410 ± 3195'        │ 23217   │
│ 21      │ 'isoUtcDateTime''4137.4 ± 0.99%''3837.0 ± 48.00''255256 ± 0.13%''260620 ± 3232'        │ 24175   │
│ 22      │ 'expiresHeaderFormat''5766.8 ± 1.06%''5389.0 ± 71.00''181809 ± 0.16%''185563 ± 2447'        │ 17341   │
│ 23      │ 'DDDD - today''3101.4 ± 2.01%''2838.0 ± 39.00''343119 ± 0.10%''352361 ± 4910'        │ 32244   │
│ 24      │ 'DDDD - tomorrow''3731.3 ± 1.39%''3452.0 ± 43.00''284486 ± 0.12%''289687 ± 3646'        │ 26801   │
│ 25      │ 'DDDD - yesterday''3381.6 ± 1.20%''3153.0 ± 36.00''311996 ± 0.10%''317158 ± 3580'        │ 29573   │
└─────────┴───────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘

after:

┌─────────┬───────────────────────┬───────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name             │ Latency avg (ns)  │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼───────────────────────┼───────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0       │ 'd''790.75 ± 1.38%''706.00 ± 21.00''1381764 ± 0.05%''1416431 ± 43423'      │ 126463  │
│ 1       │ 'W''1984.5 ± 1.73%''1795.0 ± 25.00''546421 ± 0.08%''557103 ± 7653'        │ 50392   │
│ 2       │ 'o''918.45 ± 1.21%''844.00 ± 19.00''1162783 ± 0.05%''1184834 ± 26086'      │ 108879  │
│ 3       │ 'N''841.43 ± 2.06%''741.00 ± 27.00''1321857 ± 0.05%''1349528 ± 49074'      │ 118847  │
│ 4       │ 'H''862.20 ± 2.96%''747.00 ± 18.00''1307031 ± 0.05%''1338688 ± 33054'      │ 115983  │
│ 5       │ 'S''872.17 ± 7.94%''737.00 ± 18.00''1325250 ± 0.05%''1356852 ± 32349'      │ 114656  │
│ 6       │ 'L''904.58 ± 7.46%''759.00 ± 25.00''1287262 ± 0.06%''1317523 ± 43638'      │ 110549  │
│ 7       │ 'yy''826.46 ± 4.42%''726.00 ± 25.00''1344307 ± 0.06%''1377410 ± 47623'      │ 120999  │
│ 8       │ 'yyyy''814.91 ± 2.26%''728.00 ± 26.00''1347045 ± 0.05%''1373626 ± 50875'      │ 122713  │
│ 9       │ 'default''615.72 ± 5.07%''559.00 ± 14.00''1744146 ± 0.04%''1788909 ± 45954'      │ 162412  │
│ 10      │ 'shortDate''498.18 ± 1.06%''459.00 ± 13.00''2125773 ± 0.04%''2178649 ± 60005'      │ 200730  │
│ 11      │ 'paddedShortDate''528.18 ± 1.84%''476.00 ± 18.00''2043501 ± 0.05%''2100840 ± 77809'      │ 189329  │
│ 12      │ 'mediumDate''503.56 ± 0.44%''470.00 ± 15.00''2072965 ± 0.04%''2127660 ± 70143'      │ 198586  │
│ 13      │ 'longDate''519.50 ± 1.98%''455.00 ± 12.00''2129576 ± 0.05%''2197802 ± 59534'      │ 192492  │
│ 14      │ 'fullDate''538.37 ± 1.90%''471.00 ± 12.00''2066050 ± 0.05%''2123142 ± 55507'      │ 185748  │
│ 15      │ 'isoDate''552.66 ± 10.36%''474.00 ± 13.00''2052452 ± 0.04%''2109705 ± 59493'      │ 180961  │
│ 16      │ 'shortTime''547.24 ± 10.05%''473.00 ± 13.00''2065324 ± 0.04%''2114165 ± 56552'      │ 182734  │
│ 17      │ 'mediumTime''572.48 ± 2.19%''509.00 ± 15.00''1911217 ± 0.04%''1964637 ± 56240'      │ 174679  │
│ 18      │ 'longTime''2057.0 ± 1.70%''1926.0 ± 19.00''511771 ± 0.07%''519211 ± 5173'        │ 48615   │
│ 19      │ 'isoTime''512.91 ± 1.70%''467.00 ± 15.00''2089763 ± 0.04%''2141328 ± 66639'      │ 194967  │
│ 20      │ 'isoDateTime''806.03 ± 1.94%''735.00 ± 13.00''1334132 ± 0.04%''1360544 ± 23646'      │ 124192  │
│ 21      │ 'isoUtcDateTime''709.31 ± 3.90%''633.00 ± 13.00''1542139 ± 0.05%''1579779 ± 33124'      │ 140983  │
│ 22      │ 'expiresHeaderFormat''2121.5 ± 1.66%''1979.0 ± 23.00''497625 ± 0.07%''505306 ± 5942'        │ 47138   │
│ 23      │ 'DDDD - today''1228.3 ± 3.39%''1124.0 ± 24.00''875217 ± 0.05%''889680 ± 19358'       │ 81411   │
│ 24      │ 'DDDD - tomorrow''1206.0 ± 1.67%''1128.0 ± 23.00''874523 ± 0.05%''886525 ± 18453'       │ 82921   │
│ 25      │ 'DDDD - yesterday''1206.4 ± 1.82%''1122.0 ± 22.00''878477 ± 0.05%''891266 ± 17140'       │ 82889   │
└─────────┴───────────────────────┴───────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘

dateformatter performance compared

simple benchmark
┌─────────┬─────────────────────────────────────┬───────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name                           │ Latency avg (ns)  │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼─────────────────────────────────────┼───────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0       │ 'DateFormatter d''86.75 ± 0.58%''78.00 ± 1.00''12319136 ± 0.02%''12820513 ± 166500'    │ 1152697 │
│ 1       │ 'DateFormatter W''1324.0 ± 14.47%''1120.0 ± 13.00''873909 ± 0.07%''892857 ± 10485'       │ 75532   │
│ 2       │ 'DateFormatter o''175.94 ± 0.54%''163.00 ± 2.00''5990480 ± 0.02%''6134969 ± 76211'      │ 568373  │
│ 3       │ 'DateFormatter N''94.46 ± 1.63%''87.00 ± 3.00''11193108 ± 0.02%''11494253 ± 383142'    │ 1058685 │
│ 4       │ 'DateFormatter H''91.55 ± 0.56%''84.00 ± 2.00''11592631 ± 0.02%''11904762 ± 290360'    │ 1092340 │
│ 5       │ 'DateFormatter S''88.53 ± 0.38%''84.00 ± 3.00''11687314 ± 0.02%''11904762 ± 410509'    │ 1129582 │
│ 6       │ 'DateFormatter L''107.43 ± 0.48%''100.00 ± 2.00''9744289 ± 0.01%''10000000 ± 196078'    │ 930799  │
│ 7       │ 'DateFormatter yy''99.95 ± 0.61%''91.00 ± 3.00''10750861 ± 0.02%''10989011 ± 374626'    │ 1000502 │
│ 8       │ 'DateFormatter yyyy''96.69 ± 0.37%''92.00 ± 2.00''10640948 ± 0.01%''10869565 ± 241546'    │ 1034283 │
│ 9       │ 'DateFormatter default''206.51 ± 2.03%''185.00 ± 4.00''5200845 ± 0.03%''5405405 ± 119457'     │ 484234  │
│ 10      │ 'DateFormatter shortDate''132.77 ± 1.28%''118.00 ± 3.00''8240169 ± 0.02%''8474576 ± 221076'     │ 753209  │
│ 11      │ 'DateFormatter paddedShortDate''131.05 ± 0.40%''123.00 ± 3.00''7958097 ± 0.02%''8130081 ± 193573'     │ 763056  │
│ 12      │ 'DateFormatter mediumDate''128.61 ± 1.37%''119.00 ± 3.00''8183447 ± 0.02%''8403361 ± 217328'     │ 777561  │
│ 13      │ 'DateFormatter longDate''128.35 ± 0.56%''120.00 ± 3.00''8156635 ± 0.02%''8333333 ± 213675'     │ 779134  │
│ 14      │ 'DateFormatter fullDate''167.72 ± 34.18%''122.00 ± 4.00''7886699 ± 0.03%''8196721 ± 277855'     │ 596238  │
│ 15      │ 'DateFormatter isoDate''125.96 ± 0.38%''117.00 ± 3.00''8253582 ± 0.02%''8547009 ± 213675'     │ 793895  │
│ 16      │ 'DateFormatter shortTime''134.25 ± 2.34%''119.00 ± 3.00''8191139 ± 0.02%''8403361 ± 217328'     │ 744876  │
│ 17      │ 'DateFormatter mediumTime''164.72 ± 2.55%''143.00 ± 4.00''6795670 ± 0.02%''6993007 ± 201238'     │ 607078  │
│ 18      │ 'DateFormatter longTime''445.68 ± 31.02%''332.00 ± 5.00''2938958 ± 0.03%''3012048 ± 46056'      │ 224377  │
│ 19      │ 'DateFormatter isoTime''122.19 ± 1.29%''111.00 ± 2.00''8743513 ± 0.02%''9009009 ± 159452'     │ 818392  │
│ 20      │ 'DateFormatter isoDateTime''283.72 ± 0.42%''264.00 ± 5.00''3663223 ± 0.03%''3787879 ± 73125'      │ 352466  │
│ 21      │ 'DateFormatter isoUtcDateTime''185.56 ± 0.45%''168.00 ± 4.00''5679061 ± 0.03%''5952381 ± 145180'     │ 538904  │
│ 22      │ 'DateFormatter expiresHeaderFormat''401.23 ± 2.39%''368.00 ± 6.00''2640471 ± 0.03%''2717391 ± 45040'      │ 249261  │
│ 23      │ 'DateFormatter DDDD - today''403.46 ± 1.04%''381.00 ± 7.00''2579874 ± 0.02%''2624672 ± 49125'      │ 247857  │
│ 24      │ 'DateFormatter DDDD - tomorrow''424.07 ± 12.18%''381.00 ± 5.00''2575512 ± 0.02%''2624672 ± 34903'      │ 235810  │
│ 25      │ 'DateFormatter DDDD - yesterday''426.59 ± 0.41%''410.00 ± 7.00''2411955 ± 0.02%''2439024 ± 42365'      │ 234420  │
└─────────┴─────────────────────────────────────┴───────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘

@Uzlopak Uzlopak changed the title Refactor Improve Performance Aug 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant