From 357c6155d6a020fdeb4d96673c37c936aee656b0 Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Thu, 24 Nov 2011 01:43:21 +0100 Subject: [PATCH] forEach is actually slow. --- 4chan_x.user.js | 27 ++++++++++++++++++--------- script.coffee | 7 ++++--- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/4chan_x.user.js b/4chan_x.user.js index 7b99c6da9..24bfb93c4 100644 --- a/4chan_x.user.js +++ b/4chan_x.user.js @@ -2908,7 +2908,7 @@ } }, onLoad: function() { - var nodes; + var callback, node, nodes, _i, _j, _len, _len2, _ref; $.off(d, 'DOMContentLoaded', Main.onLoad); if (conf['404 Redirect'] && d.title === '4chan - 404' && /^\d+$/.test(g.THREAD_ID)) { redirect(); @@ -2936,13 +2936,18 @@ if (conf['Index Navigation']) nav.init(); } nodes = $$('.op, a + table'); - g.callbacks.forEach(function(callback) { + _ref = g.callbacks; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + callback = _ref[_i]; try { - return nodes.forEach(callback); + for (_j = 0, _len2 = nodes.length; _j < _len2; _j++) { + node = nodes[_j]; + callback(node); + } } catch (err) { - return alert(err); + alert(err); } - }); + } $.on($('form[name=delform]'), 'DOMNodeInserted', Main.node); return options.init(); }, @@ -2952,16 +2957,20 @@ if (origin === 'http://sys.4chan.org') return QR.receive(data); }, node: function(e) { - var target; + var callback, target, _i, _len, _ref, _results; target = e.target; if (target.nodeName !== 'TABLE') return; - return g.callbacks.forEach(function(callback) { + _ref = g.callbacks; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + callback = _ref[_i]; try { - return callback(target); + _results.push(callback(target)); } catch (err) { } - }); + } + return _results; }, css: '\ /* dialog styling */\ diff --git a/script.coffee b/script.coffee index 4c7313276..37b093f6a 100644 --- a/script.coffee +++ b/script.coffee @@ -2307,9 +2307,10 @@ Main = nodes = $$ '.op, a + table' - g.callbacks.forEach (callback) -> + for callback in g.callbacks try - nodes.forEach callback + for node in nodes + callback node catch err alert err $.on $('form[name=delform]'), 'DOMNodeInserted', Main.node @@ -2323,7 +2324,7 @@ Main = node: (e) -> {target} = e return unless target.nodeName is 'TABLE' - g.callbacks.forEach (callback) -> + for callback in g.callbacks try callback target catch err