|
|
|
April 15th, 2008
10:31 am KML - теперь стандарт.
|
November 19th, 2007
06:22 pm - forEach vs. for
Необходимость пройтись по массиву возникает довольно часто. Как это сделать наиболее быстро?
// Нервным поборникам красивого кода дальше лучше не читать ;)
Код
Для forEach:
arr.forEach(function (item) {
var res = " " + item + " ";
});
В случае, если браузер не поддерживает forEach, в игру вступает:
if (!Array.prototype.forEach) {
Array.prototype.forEach = function (callback, thisObject) {
thisObject = thisObject || window;
for (var index = 0, length = this.length; index < length; index++) {
callback.apply(thisObject, [this[index], index, this]);
}
}
}
Для for:
for (var j = 0, l = arr.length; j < l; j++) {
var res = " " + arr[j] + " ";
}
Кроме того, проверим метод each, которым библиотека prototype расширяет Array:
arr.each(function (item) {
var res = " " + item + " ";
});
Тестируем
Метод замера времени
Выполним приведенный выше код 5000 раз для массива из 40 элементов.
Результаты:
Время приведено в миллисекундах.
Firefox 2.0.0.9:
| Array.prototype.forEach |
906 |
| Prototype::each |
1422 |
| for |
609 |
IExplorer 6.0:
| Array.prototype.forEach |
1641 |
| Prototype::each |
1843 |
| for |
750 |
Opera 9.24:
| Array.prototype.forEach |
515 |
| Prototype::each |
453 |
| for |
188 |
Делаем выводы
Если у вас много проходов по массивам и очень жесткие рамки по скорости выполнения, вспомните про старый добрый for ;)
|
November 12th, 2007
02:07 am - Re: Пишем быстрый JavaScript. Оптимизация функции обработки текста В предыдущем посте я написал: "Один replace быстрее, чем два".
В комментариях вот тут мне дали ссылку на замечательную статью "Faster JavaScript Trim", в которой автор провел исследование на скорость разных вариантов регулярных выражений реализующих trim.
Что же касается двух replace. На коротких строках два replace проигрывают за счет больших накладных расходов на их осуществление. Зато на длинных, когда начинает заметно сказываться время сканирования строки, сложное, получившееся из двух простых регулярное выражение, дает о себе знать в полный рост.
Резюме 1: выбираем решение под задачу. Оба варианта имею право на существование.
Резюме 2: пост написал не зря. Получил офигительную ссылку. Да и второе предложение пока никто не опроверг :)
|
November 11th, 2007
11:41 pm - Пишем быстрый JavaScript. Оптимизация функции обработки текста
Писать будем на примере стандартной функции trim или strip, как она называется в prototype. Эта функция удаляет начальные и конечные пробельные символы. Cмотрим реализации "лидеров" prototype: strip: function () { return this.replace(/^\s+/, '').replace(/\s+$/, ''); } jQuery: trim: function (t){ return (t||"").replace(/^\s+|\s+$/g, ""); } Пишем быстрый вариант Кому-то покажется, что тут нечего оптимизировать, но мы все-таки сделаем два предположения: - Один replace быстрее, чем два.
- Создание объекта Regexp - это долго.
Напишем свою функцию QuickTrim: function QuickTrim (str) { return str.replace(QuickTrim.exp, ''); } QuickTrim.exp = /^\s+|\s+$/g; Тестируем Метод замера времени Bызовем эту функцию 50000 раз, на вход подадим такую строчку: " ssssss ". Результаты: Время приведено в миллисекундах. Firefox 2.0.0.9: | Prototype | 578 | | jQuery | 391 | | QuickTrim | 390 | IExplorer 6.0: | Prototype | 1140 | | jQuery | 672 | | QuickTrim | 391 | Opera 9.24: | Prototype | 1266 | | jQuery | 1109 | | QuickTrim | 1079 | Делаем выводы Справедливость первого предположения очевидна. Второе же справедливо только для IExplorer. Рекомендации: Объединяйте регулярный выражения, если это возможно. Кешируйте создаваемые инстанции регулярных выражений, так вы выиграете в IExplorer, не проиграв в других браузерах. Update: Один replace быстрее, чем два - спорно.
|
November 6th, 2007
11:21 pm - Новости на карте Вот выпустили новости на карте Москвы. Получилось вполне достойно. Еще бы точки передизайнить.
|
October 26th, 2007
12:58 pm - Firefox 2.0.0.8
Совсем недавно вышла новая версия Firefox 2.0.0.8. Вышла так, что уже на следующей неделе они обещают выпустить 2.0.0.9. Конкретно я пострадал из-за Bug 400421 – Removing AREA element makes the image disappear. Текущее решение:
var map = document.getElementById("myMap"), parent = map.parentNode; // удаляем map из DOM parent.removeChild(map); ... // здесь удаляем что нужно // возвращаем map в DOM parent.appendChild(map);
Теперь вот думаю, можно ли будет убрать эту зачинку после выхода новой версии.С одной стороны уже будет некоторое количество людей, которые не обновятся и будут видеть проблему, а с другой, количество этих людей будет исчезающе мало.
|
September 18th, 2007
11:54 am - jQuery UI Найдите десять отличий (пример взят со страницы ui.jquery.com)
В Firefox 2.0.0.3:

В IE 6.0:

В Opera 9.2: скрипт примера не заработал.
|
August 27th, 2007
05:34 pm - Велосипед и самолет
Велосипед - негабаритный багаж, идет по 50 рублей за килограмм. На весы поставили только заднее колесо, получилось 7 кг. - А вам квитанция нужна? - Да не очень. - (сквозь зубы) 400 р. в паспорт.
По всем приметам наступили на задний переключатель, понятное дело погнули, выправил за 250 р.
|
12:29 pm
На Максе было очень много людей. Они были везде, особенно в электричке. Обойдя почти все самолеты, Настя сдалась, решительно села в тень крыла Ту-144 и отправила меня в свободное плавание. Я угребся, но посмотрел все.
|
July 13th, 2007
11:50 am Я смотрю голливудское кино, мне оно нравиться. Потому что я знаю, чего от него хочу, и они это знают. Я не ищу там того, чего там быть не может. А вот чего я не понимаю: зачем люди, которым не нравиться Голливуд-стандарт, упорно идут в кинотеатры, каждый раз разочаровываются - поносят фильм, а потом идут на следующий. Это что культурный мазохизм?
|
July 5th, 2007
10:37 am Олимпиада 2014 будет в Сочи. И что нам это принесет?
|
June 6th, 2007
11:20 am - Про уведомления об оплате телефона В Москве в уведомлениях об оплате телефона не пишут номера, на которые ты звонил, только код города. А, например, в Магнитогорске их пишут, кроме того, и точно пишут, когда и во сколько ты звонил. С одной стороны это удобно, получил бумажку, посмотрел и легко можешь вспомнить, за что платишь. А вот с другой, если кто-то другой возьмет эту бумажку, а они весьма доступны в почтовых ящиках, он с той же легкостью узнает всю твою телефонную историю. Лично мне Московский подход нравиться больше, в крайнем случае, можно обратиться за детализацией.
|
June 4th, 2007
12:54 pm - Усадьба. Джаз Выходные провел на "Усадьба. Джаз" в Архангелськом. Было много замечательной музыки и хорошего настроения.
Вершиной фестиваля стало выступление Маркуса Миллера, я ожидал чумовую музыку и великолепное исполнение, но он перекрыл все мои ожидания. То, что я увидел, было чистым волшебством. Это было шикарно, и даже еще и еще лучше :)
Кстати, благодаря футболке "Я с Урала" я попал в историю.
|
May 31st, 2007
05:23 pm - Сюрпризы продолжаются Гугл сделал поиск по карте на русском языке.
|
May 28th, 2007
11:53 am
Вчера встречался с Вагановым Сергеем Александровичем. Замечательный человек! Я ему был студентом, дипломником, и, наконец подчиненным. Кстати, этот человек устроил мне знакомство с велопоходами. Похвалюсь: моей первой покатушкой был двухдневный заезд по горам на 190 км, вел был с заклиненной вилкой, до сих пор не представляю как я это пережил. А вот что пишет Надя.
|
11:29 am - Империя наносит ответный удар Гугл выложил карты российских городов.
|
May 17th, 2007
11:48 am - Впечатления Вчера ходил в Дом музыки , на "Hammond meets Klais" - Классический и джазовый орган Джой ДеФранческо и Черри Роудс.
Весьма впечатлен. Вообще, если честно, мне больше понравилось исполнение ДеФранческо (я вообще люблю джаз). Хотя надо отдать должное и классическому исполнению, а та композиция, которую Роудс сыграла на бис, меня просто поразила, мне сказали, что я хлопал как сумашедший.
|
May 11th, 2007
02:35 pm - Для меня Сделать шаг к пропасти, сложней чем прыгнуть в неё.
|
January 16th, 2007
07:37 pm В воскресенье арендодатели установили стиральную машину фирмы Indesit. Ей года 3, наверное. Для более детального знакомства с объектом решил добыть руководство пользователя. И... то ли не там, то ли не так искал, но нашел только за деньги. А на сайте производителя такой модели вообще не знают, там все что старее года, то не существует. Это заговор, точно заговор!
Видимо развивать отношения придется исключительно по наитию.
|
01:27 pm - Последние просмотренные: Жара - 4,0 Волкодав - 3,5 Ночь в музее - 3,5 Следопыт - 3,0
|
|
|