JSFiddle - React, Tailwind, and code Playground

by blesh

JavaScript

console.clear();

function LinkedList() {
    var self = this,
        head, base,
        current;

    self.add = function (value) {
        var item = {
            value: value
        };

        if (current) {
            item.prev = current;
            if (current.next) {
                item.next = current.next;
                item.next.prev = item;
            }
            current.next = item;
        } else {
            base = item
        }

        if (!item.next) {
            head = item;
        }

        current = item;
    };

    self.base = function () {
        current = base;
        return self.current();
    };

    self.head = function () {
        current = head;
        return self.current();
    };

    self.current = function () {
        return current ? current.value : undefined
    };

    self.next = function () {
        current = current.next;
        return self.current();
    };

    self.prev = function () {
        current = current.prev;
        return self.current();
    };
}

var start = null,
    iterations = 8000000,
    i, item;

(function () {
    var ll = new LinkedList(),
        start = +new Date();
    for (i = 0; i < iterations; i++) {
        ll.add('test' + i);
    }

    for (item = ll.base(); item; item = ll.next()) {
        //stuff
    }
    console.log((+new Date()) - start);
}());

(function () {
    var arr = [];
    start = +new Date();
    for (i = 0; i < iterations; i++) {
        arr.push('test' + i);
    }

    for (i = 0; i < arr.length; i++) {
        item = arr[i];
        //stuff
    }
    console.log((+new Date()) - start);
}());