Script Preparation code:
x
 
function randomIntFromInterval(min, max) {
  // min and max included
  return Math.floor(Math.random() * (max - min + 1) + min);
}
var rows = [];
let lasth = 0;
for (let i = 0; i < 10000; i++) {
  lasth += randomIntFromInterval(16, 50);
  rows.push(lasth);
}
function sliceRange(arr, min) {
  let l = 0,
    r = arr.length,
    m,
    lr,
    rl,
    res = [];
  while (l < r) {
    m = ~~(l + (r - l) / 2);
    if (arr[m] < min) l = m + 1;
    else if (arr[m] > min) r = m;
    else break;
  }
  lr = m;
  rl = m;
  while (l < lr) {
    m = ~~(l + (lr - l) / 2);
    if (arr[m] < min) l = m + 1;
    else lr = m;
  }
  for (let i = 0; i < 60; i += 1) {
    const rid = i + l;
    if (rid < arr.length) res.push(rid);
  }
  return res;
}
function getDatesBetweenRange(dates, min, max) {
  var subArray = [];
  var value, iCntr;
  var start, end;
  var low = 0,
    high = dates.length - 1;
  while (high - low > 1) {
    centre = Math.floor((high + low) / 2);
    if (dates[centre] < min) low = centre;
    else high = centre;
  }
  start = low;
  high = dates.length - 1;
  while (high - low > 1) {
    centre = Math.floor((high + low) / 2);
    if (dates[centre] > max) high = centre;
    else low = centre;
  }
  end = high;
  return [start-1,end+1];
}
Tests:
  • sliceRange

     
    sliceRange(rows, 70000, 70400)
  • getDatesBetweenRange

     
    getDatesBetweenRange(rows, 70000, 70400)
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    sliceRange
    getDatesBetweenRange

    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/98.0.4758.102 Safari/537.36
Chrome 98 on Windows
View result in a separate tab
Test name Executions per second
sliceRange 2057699.5 Ops/sec
getDatesBetweenRange 54299.2 Ops/sec