File 8572-Optimize-string-lenght-1-on-binaries.patch of Package erlang
From 79e9126932e724d9556b4f95174b3f277a8c505e Mon Sep 17 00:00:00 2001
From: Dan Gudmundsson <dgud@erlang.org>
Date: Wed, 30 Apr 2025 09:04:30 +0200
Subject: [PATCH 2/2] Optimize string:lenght/1 on binaries
---
lib/stdlib/src/string.erl | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/lib/stdlib/src/string.erl b/lib/stdlib/src/string.erl
index 02dd04fae7..cfcf6d74cb 100644
--- a/lib/stdlib/src/string.erl
+++ b/lib/stdlib/src/string.erl
@@ -1146,6 +1146,13 @@ length_1(Str, N) ->
{error, Err} -> error({badarg, Err})
end.
+length_b(<<CP2, CP3, CP4, CP5, CP6, CP7, CP8, CP9, Rest/binary>>,
+ CP1, N)
+ when CP1 =/= $\r,CP2 =/= $\r,CP3 =/= $\r,CP4 =/= $\r,
+ CP5 =/= $\r,CP6 =/= $\r,CP7 =/= $\r,CP8 =/= $\r,
+ ((CP1 bor CP2 bor CP3 bor CP4 bor CP5 bor CP6 bor CP7 bor CP8 bor CP9)
+ band bnot 127) =:= 0 ->
+ length_b(Rest, CP9, N+8);
length_b(<<CP2/utf8, Rest/binary>>, CP1, N)
when ?ASCII_LIST(CP1,CP2) ->
length_b(Rest, CP2, N+1);
--
2.43.0