Script Preparation code:
x
 
var arabic_str = "kksldfnjeoliwkfmirewogbregiojrmfikrefnهنصتةبهنمخصةبهخصثةبثصهنخقلةثقملىثقمةلكمسقنلمنكقةلمنيبةىلميبنكلكمطسيوبصثقنلحخثقتلثقنلوسيكملنسيكملklrmglkedrmg;ler,g;lkerdmglkermg;ler,g;lerkmglkerglk;ermg;lermg;hjfbwefseoifnuiwefصثعىبصثبىهصثىةبخهمصقاىلثخقتلةحخثقلةثقلةثقلةثقلةثخقلةحخثقلةخقثلةثحخقلةثينقىلنمقثيىلنمقىلمنيثقسىلقىلمقىلنمكقىلمنقىلمنيثقىلمنقىلمنقثىيةلمنخىثيقمنلةيمنلتىنثتقيىلخهمثقيةلخمثقيىلثقفيىلنثقيةلمنخىفقثيلىىىتنعصثىبمخنثةصبحةثصقخمبىثقخمنهلىةثحكقةلكحثقةلمنثقىلمنثقىلكمثةقلكمثقةلمنىثقلمنىثقلمنىثقلنمكثىقلنمكثقىلمنثيقىلمطنثقىلمنطثقىةسلبثمكسقيلةثطقكةلونطحكصثقنلخحثقةلحكخمقفةاقفهىاقفاىقفةلحخثقهخابهقعثالخهثقتلخهثقالخهاثقهعلخباثقحهخبةصحخثجؤوخحجصسثؤوحخصثرةىخهمثقيلىرخهمثقلىخهثقمللاخهثمقلتحخثقتلبحخصثتبحخصثستىبخهمثقىلخهمنثقىلحخثقىلحثقىلخهمنثقصىلثقةلحخثقىلمخهنثيقىلمصثويبجحصضثنيحخصثتبهختثصقخهلبةثقهنخلمةثقيرنمهىيؤنتءراىهخثقةرثقمرةثقيمخهنلىخهثقنلىخهمثقهتل"
var english_str = "UTF-8 encodes each of the 1,112,064 valid code points in the Unicode code space (1,114,112 code points minus 2,048 surrogate code points) using one to four 8-bit bytes (a group of 8 bits is known as an «octet» in the Unicode Standard). Code points wi"
function lengthInUtf8Bytes(str) {
  // Matches only the 10.. bytes that are non-initial characters in a multi-byte sequence.
  var m = encodeURIComponent(str).match(/%[89ABab]/g);
  return str.length + (m ? m.length : 0);
}
function byteLength(str) {
  // returns the byte length of an utf8 string
  var s = str.length;
  for (var i=str.length-1; i>=0; i--) {
    var code = str.charCodeAt(i);
    if (code > 0x7f && code <= 0x7ff) s++;
    else if (code > 0x7ff && code <= 0xffff) s+=2;
  }
  return s;
}
function byteLengthTextEncoder(str) {
  return (new TextEncoder().encode(str)).length;
}
function byteLengthBlob(str) {
  return new Blob([str]).size;
}
Tests:
  • with a loop Arabic

     
    byteLength(arabic_str);
  • with a regex Arabic

     
    lengthInUtf8Bytes(arabic_str);
  • with a TextEncoder ِِArabic

     
    byteLengthTextEncoder(arabic_str)
  • with a Blob Arabic

     
    byteLengthBlob(arabic_str);
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    with a loop Arabic
    with a regex Arabic
    with a TextEncoder ِِArabic
    with a Blob Arabic

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: one month ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36
Chrome 133 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
with a loop Arabic 1397361.6 Ops/sec
with a regex Arabic 91756.8 Ops/sec
with a TextEncoder ِِArabic 567086.8 Ops/sec
with a Blob Arabic 19844.5 Ops/sec