Он использует массив и пару целых чисел для указания первого значения - индекса последнего значения
private transient int firstIndex;
private transient int lastIndex;
private transient E[] array;
Вот пример реализации.
Что ж, лучший способ получить ответ - это просто потратить 2 минуты и написать цикл, который делает это в обоих направлениях тысячу раз, и проверить firebug, чтобы узнать, какой из них быстрее;)
Мне пришлось оптимизировать множество операций со строками при работе с MXHR, и, по моему опыту, простые методы String значительно быстрее, чем RegExps в текущих браузерах. Используйте регулярные выражения для кратчайших возможных строк и делайте все возможное с помощью методов String.
Например, я использую это маленькое число в моем текущем коде:
var mime = mimeAndPayload.shift().split('Content-Type:', 2)[1].split(";", 1)[0].replace(' ', '');
Это чертовски уродливо, но, хотите верьте, хотите нет, оно значительно быстрее, чем эквивалентное RegExp при высокой нагрузке.
Я ожидаю, что использование split () будет намного быстрее. Это зависит от многих особенностей, количества строк в зависимости от длины, сложности регулярного выражения и т. Д.