Commits

Timwi committed 16f77e2

Apply the same performance optimisation to "substring"

  • Participants
  • Parent commits 724db62

Comments (0)

Files changed (1)

File lib/strings.fnc

  ║      let f = b >> m;                      ║  │                        ┌─┴─╖
  ║      let e = f ≠ 0 & f ≠ −1;              ║  │              ┌─────────┤ · ╟──┐
  ║      let c = ((b << 21) >> m) & 2097151;  ║  │              │  ╓───╖  ╘═╤═╝  │
- ║      let r = b & ((1 << m) − 1);          ║  │  ┌───╖       └──╢ ʃ ╟────┘    │
+ ║      let r = b & ¬(−1 << m);              ║  │  ┌───╖       └──╢ ʃ ╟────┘    │
  ║      e ? c ? r : (r | (−1 << m)) : b      ║  └──┤ × ╟─────┐    ╙─┬─╜         │
  ╚═══════════════════════════════════════════╝     ╘═╤═╝  ╔══╧═╗  ┌─┴─╖  ┌────╖ │
                          ┌───────────────────────────┴─┐  ║ 21 ║  │ × ╟──┤ >> ╟─┘
              ┌───────────┴───────────┐                 │  ╚══╤═╝  ╘═╤═╝  ╘═╤══╝
-             │  ┌────╖  ╔═══╗        │               ┌─┴─╖   └──────┘      │
-     ┌───────┴──┤ << ╟──╢ 1 ║      ┌─┴─╖  ┌──────────┤ · ╟───────────────┐ │
-     │          ╘══╤═╝  ╚═══╝   ┌──┤ · ╟──┴───────┐  ╘═╤═╝               ├─┘
-     │           ┌─┴─╖        ┌─┘  ╘═╤═╝  ╔════╗  │    │                 │
-     │           │ + ╟────┬───┘      │    ║ 21 ║  │    │                 │
-     │           ╘═╤═╝   ┌┴┐    ┌────┘    ╚══╤═╝  │    │                 │
-     │  ┌────╖  ╔══╧═╗   └┬┘    │ ┌────╖  ┌──┴─╖  │    │                 │
+             │  ┌────╖  ╔════╗       │               ┌─┴─╖   └──────┘      │
+     ┌───────┴──┤ << ╟──╢ −1 ║     ┌─┴─╖  ┌──────────┤ · ╟───────────────┐ │
+     │          ╘══╤═╝  ╚════╝  ┌──┤ · ╟──┴───────┐  ╘═╤═╝               ├─┘
+     │           ┌─┴─┐        ┌─┘  ╘═╤═╝  ╔════╗  │    │                 │
+     │           │   ├────┬───┘      │    ║ 21 ║  │    │                 │
+     │           └───┘   ┌┴┐    ┌────┘    ╚══╤═╝  │    │                 │
+     │  ┌────╖  ╔════╗   └┬┘    │ ┌────╖  ┌──┴─╖  │    │                 │
      └──┤ << ╟──╢ −1 ║  ┌─┴──┐  └─┤ >> ╟──┤ << ║  │    │       ┌────╖    │
         ╘═╤══╝  ╚════╝ ┌┴┐   │    ╘═╤══╝  ╘══╤═╝  │    └───────┤ >> ╟──┐ │
          ┌┴┐           └┬┘ ┌─┴─╖ ┌┐ │        └────┘            ╘══╤═╝  ├─┘