JSFiddle - React, Tailwind, and code Playground

JavaScript

(function () {
    console.time('test');
    for (var i = 0; i < 100000; i++) {
        var fn = new Function ('str',
            "var nch;" +
            "if (str.indexOf('!.') === -1) {" +
                "return str.split('.');" +
            "}" +
            "var path = []," +
                "item = ''," +
                "ch = str.charAt(0)," +
                "pch;" +
            "for (var i = 0, l = str.length; i < l; i++) {" +
                "nch = str.charAt(i + 1);" +
                "if (ch === '.' && pch === '!') {" +
                    "item += '.';" +
                "} else if (ch === '.' && pch !== '!') {" +
                    "path.push(item);" +
                    "item = '';" +
                "} else if (ch !== '!' || nch !== '.') {" +
                    "item += ch;" +
                "}" +
                "pch = ch;" +
                "ch = nch;" +
            "}" +
            "path.push(item);" +
            "return path;");
    }
    fn('asdf');

    console.timeEnd('test');
})();