JSFiddle - React, Tailwind, and code Playground

JavaScript

var i, a = [];
var maxLen = 1e6;

for (i=maxLen; --i;) a.push(i); // init array 1M items

console.time('example1');
for (i = 1e2; --i;) {
		a.unshift(123456);
    a.pop();
		if (a.length > maxLen) a.length = maxLen;
}
console.timeEnd('example1');

//--------------------------------------
// из b только читаем (мини буфер 100 элементов), в a вставляем 
a = [];
b = []; 
for (i=1e6; --i;) a.push(i); // init array 1M items
var overflowCount;

console.time('example2');
for (i = 1e7; --i;) {
		a.push(123456);
    overflowCount = a.length - maxLen;
    if (overflowCount > 10000) { // удаляем лишние элементы только при серьезном переполнении
    		a = a.splice(0, overflowCount); // удаляем в начале overflowCount элементов
    }
    
    if (b.length === 0) { // в b закончились элементы
    		b = a; // переносим все в b из a
        a.length = 0; // обнуляем буфер вставки
        if (b.length > maxLen) b.length = maxLen; 
        b.reverse(); // разворачиваем буфер извлечения чтобы доставать элементы из конца
    }
    b.pop(); 
}
console.timeEnd('example2');