Commit 6129112
committed
⚡️ Parse
Although "number" is still the default `status-att-val`, this uses
ExtensionData with RFC4466's `tagged_ext_val` for any unknown
non-numeric `STATUS` attribute.
Running the benchmarks (on my phone, without YJIT) shows a 40% speedup!
invalid_status_response_trailing_space
v0.4.4-16-g0be6b65b: 43956.1 i/s
0.4.4: 31788.6 i/s - 1.38x slower
rfc3501_7.2.4_STATUS_response_example
v0.4.4-16-g0be6b65b: 45436.2 i/s
0.4.4: 32458.5 i/s - 1.40x slower
status_response_uidnext_uidvalidity
v0.4.4-16-g0be6b65b: 45334.2 i/s
0.4.4: 32709.1 i/s - 1.39x slower
Various changes:
* Add alias for `mailbox` to `astring`.
* Use char token matchers (faster than `match(T_#{name})`).
* Extract `status-att-list` and `status-att-val` methods, to mimic ABNF.
* Add a case statement to `status-att-val` and explicitly match all
RFC3501 and RFC9051 status attributes.STATUS faster, using RFC4466 grammar1 parent 46381ff commit 6129112
File tree
2 files changed
+114
-23
lines changed- lib/net/imap
- test/net/imap/fixtures/response_parser
2 files changed
+114
-23
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
600 | 600 | | |
601 | 601 | | |
602 | 602 | | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
603 | 613 | | |
604 | 614 | | |
605 | 615 | | |
| |||
1508 | 1518 | | |
1509 | 1519 | | |
1510 | 1520 | | |
| 1521 | + | |
1511 | 1522 | | |
1512 | | - | |
1513 | | - | |
1514 | | - | |
1515 | | - | |
1516 | | - | |
1517 | | - | |
1518 | | - | |
1519 | | - | |
1520 | | - | |
1521 | | - | |
1522 | | - | |
1523 | | - | |
1524 | | - | |
1525 | | - | |
1526 | | - | |
| 1523 | + | |
| 1524 | + | |
| 1525 | + | |
| 1526 | + | |
| 1527 | + | |
| 1528 | + | |
| 1529 | + | |
| 1530 | + | |
| 1531 | + | |
| 1532 | + | |
| 1533 | + | |
| 1534 | + | |
| 1535 | + | |
| 1536 | + | |
| 1537 | + | |
| 1538 | + | |
| 1539 | + | |
| 1540 | + | |
| 1541 | + | |
| 1542 | + | |
| 1543 | + | |
| 1544 | + | |
| 1545 | + | |
| 1546 | + | |
| 1547 | + | |
| 1548 | + | |
| 1549 | + | |
| 1550 | + | |
| 1551 | + | |
| 1552 | + | |
| 1553 | + | |
| 1554 | + | |
| 1555 | + | |
| 1556 | + | |
| 1557 | + | |
| 1558 | + | |
| 1559 | + | |
| 1560 | + | |
| 1561 | + | |
| 1562 | + | |
| 1563 | + | |
| 1564 | + | |
| 1565 | + | |
| 1566 | + | |
| 1567 | + | |
| 1568 | + | |
| 1569 | + | |
| 1570 | + | |
| 1571 | + | |
| 1572 | + | |
| 1573 | + | |
| 1574 | + | |
| 1575 | + | |
| 1576 | + | |
| 1577 | + | |
| 1578 | + | |
| 1579 | + | |
| 1580 | + | |
| 1581 | + | |
| 1582 | + | |
| 1583 | + | |
| 1584 | + | |
| 1585 | + | |
| 1586 | + | |
| 1587 | + | |
| 1588 | + | |
| 1589 | + | |
| 1590 | + | |
| 1591 | + | |
1527 | 1592 | | |
1528 | | - | |
1529 | | - | |
1530 | | - | |
1531 | | - | |
1532 | | - | |
1533 | | - | |
1534 | | - | |
1535 | | - | |
| 1593 | + | |
1536 | 1594 | | |
1537 | 1595 | | |
1538 | 1596 | | |
| |||
Lines changed: 33 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
0 commit comments