Script Preparation code:
x
 
var testString = '+'.repeat(200) + '='.repeat(20000) + '+'.repeat(200);
var testString2 = '-'.repeat(200) + '='.repeat(20000) + '+'.repeat(200);
var testString3 = 'a'.repeat(200) + 'b'.repeat(200) + 'c'.repeat(200) + 'd'.repeat(200) + 'e'.repeat(200) + 'f'.repeat(200) + 'g'.repeat(200) + 'h'.repeat(200) + 'i'.repeat(200) + 'j'.repeat(200) + 'k'.repeat(200) + 'l'.repeat(200);
var testArray = ['+'];
var testSet = new Set(testArray);
var testArray2 = ['+', '-'];
var testSet2 = new Set(testArray2);
var testArray3 = ['a', 'b', 'c', 'd', 'e'];
var testSet3 = new Set(testArray3);
function trimAnySet(str, chars) {
    var start = 0, 
        end = str.length;
    while(start < end && chars.has(str[start]))
        ++start;
    while(end > start && chars.has(str[end - 1]))
        --end;
    return (start > 0 || end < str.length) ? str.substring(start, end) : str;
}
function trimAny(str, chars) {
    var start = 0, 
        end = str.length;
    while(start < end && chars.indexOf(str[start]) >= 0)
        ++start;
    while(end > start && chars.indexOf(str[end - 1]) >= 0)
        --end;
    return (start > 0 || end < str.length) ? str.substring(start, end) : str;
}
Tests:
  • Array single

     
    trimAny(testString, testArray);
  • Set single

     
    trimAnySet(testString, testSet);
  • Array double

     
    trimAny(testString2, testArray2);
  • Set double

     
    trimAnySet(testString2, testSet2);
  • Array 5

     
    trimAny(testString3, testArray3);
  • Set 5

     
    trimAnySet(testString3, testSet3);
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Array single
    Set single
    Array double
    Set double
    Array 5
    Set 5

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 3 years ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36 Edg/93.0.961.38
Chrome 93 on Windows
View result in a separate tab
Test name Executions per second
Array single 267136.5 Ops/sec
Set single 199973.2 Ops/sec
Array double 234984.5 Ops/sec
Set double 170225.2 Ops/sec
Array 5 78295.0 Ops/sec
Set 5 68348.0 Ops/sec