Цитата:
|
Исправления предлагаю. Замените строку
Код:
for (var e in ts) { Код:
for(var e = 0; e < ts.length; e++) { |
Цитата:
|
Для
Array часто добавляют реализацию стандартных методов в прототип для старых браузеров, поэтому el может оказаться, например, "forEach" или "indexOf" … можно конечно добавить проверку hasOwnProperty , но лучше перебирать по индексам элементов. |
Цитата:
Цитата:
|
Согласен, for in выглядит несколько некошерным, таким "неформалом". Но, к сожалению, я это знал и раньше, и прошёл много всяких граблей на эту тему, использовать теперь не боюсь. Оставлю пока как "каприз художника".
О, я много где сэкономил на производительности! :-) Но вы всё равно не найдёте. Да я и сам сейчас не вспомню всего. Но можно ведь производительность просто измерить. В первой версии я сэкономил на коде (измерителя нет). Но вот в следующей (Simple Table Sorter v0.03) можно посмотреть скорость: http://ir2.ru/sort0.03/table1000.htm Можно даже сравнить по скорости с некоторыми другими сортировщиками (желательно в IE): http://ir2.ru/sorters/fd/ http://ir2.ru/sorters/la/ http://ir2.ru/sorters/standardista/ Это, конечно, очень приблизительно (измеритель прикручивал к чужому коду, мог не всё учесть и неправильно назвать какие-то моменты). Ну, плюс я добрый - добавил в standardista небольшой хак, без которого в IE сортировка работала бы десятки секунд. |
Кстати заметил, что последнее время, с появлением Object.keys, у меня в коде вообще исчезли for-in, теперь пишу:
var keys = Object.keys(obj), i = keys.length; while (i--) { obj[keys[i]]… } в браузерах поддерживающих Object.keys разница в скорости с вариантом: for (key in obj) { if (obj.hasOwnProperty(key)) { obj[key]… } } несущественна. |
Цитата:
Object.keys(obj).forEach(function(key) { // ... }); |
Как-то расточительно на каждую итерацию выполнять функцию, когда можно этого не делать
|
Да перестань, на фоне любой операции внутри функции вызов самой функции будет незначительным. Выигрыш у тебя будет только если ты проверяешь на скорость различные виды ничего не делающих циклов.
А вот создающийся скоп внутри функции реально полезен. |
Часовой пояс GMT +3, время: 16:32. |