Home
gregof

> Recent Entries
> Archive
> Friends
> User Info
> previous 20 entries

Advertisement

April 15th, 2008


10:31 am
KML - теперь стандарт.

(1 comment | Leave a comment)

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 ;)


(10 comments | Leave a comment)

November 12th, 2007


02:07 am - Re: Пишем быстрый JavaScript. Оптимизация функции обработки текста
В предыдущем посте я написал: "Один replace быстрее, чем два".

В комментариях вот тут мне дали ссылку на замечательную статью "Faster JavaScript Trim", в которой автор провел исследование на скорость разных вариантов регулярных выражений реализующих trim.

Что же касается двух replace. На коротких строках два replace проигрывают за счет больших накладных расходов на их осуществление. Зато на длинных, когда начинает заметно сказываться время сканирования строки, сложное, получившееся из двух простых регулярное выражение, дает о себе знать в полный рост.

Резюме 1: выбираем решение под задачу. Оба варианта имею право на существование.

Резюме 2: пост написал не зря. Получил офигительную ссылку. Да и второе предложение пока никто не опроверг :)

(Leave a comment)

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 быстрее, чем два - спорно.

(8 comments | Leave a comment)

November 6th, 2007


11:21 pm - Новости на карте
Вот выпустили новости на карте Москвы. Получилось вполне достойно.  Еще бы точки передизайнить.

(7 comments | Leave a comment)

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);

Теперь вот думаю, можно ли будет убрать эту зачинку после выхода новой версии.С одной стороны уже будет некоторое количество людей, которые не обновятся и будут видеть проблему, а с другой, количество этих людей будет исчезающе мало.


(2 comments | Leave a comment)

September 18th, 2007


11:54 am - jQuery UI
Найдите десять отличий (пример взят со страницы ui.jquery.com)

В Firefox 2.0.0.3:



В IE 6.0:



В Opera 9.2:
скрипт примера не заработал.

(5 comments | Leave a comment)

August 27th, 2007


05:34 pm - Велосипед и самолет

Велосипед - негабаритный багаж, идет по 50 рублей за килограмм. На весы поставили только заднее колесо, получилось 7 кг.

 - А вам квитанция нужна?

 - Да не очень.

 - (сквозь зубы) 400 р. в паспорт.

По всем приметам наступили на задний переключатель, понятное дело погнули, выправил за 250 р.

(Leave a comment)

12:29 pm

На Максе было очень много людей. Они были везде, особенно в электричке.

Обойдя почти все самолеты, Настя сдалась, решительно села в тень крыла Ту-144 и отправила меня в свободное плавание. Я угребся, но посмотрел все.


(2 comments | Leave a comment)

July 13th, 2007


11:50 am
Я смотрю голливудское кино, мне оно нравиться. Потому что я знаю, чего от него хочу, и они это знают. Я не ищу там того, чего там быть не может. А  вот чего я не понимаю: зачем люди, которым не нравиться Голливуд-стандарт, упорно идут в кинотеатры, каждый раз разочаровываются - поносят фильм, а потом идут на следующий. Это что культурный мазохизм?
Tags:

(3 comments | Leave a comment)

July 5th, 2007


10:37 am
Олимпиада 2014 будет в Сочи. И что нам это принесет?

(9 comments | Leave a comment)

June 6th, 2007


11:20 am - Про уведомления об оплате телефона
В Москве в уведомлениях об оплате телефона не пишут номера, на которые ты звонил, только код города. А, например, в Магнитогорске их пишут, кроме того, и точно пишут, когда и во сколько ты звонил. С одной стороны это удобно, получил бумажку, посмотрел и легко можешь вспомнить, за что платишь. А вот с другой, если кто-то другой возьмет эту бумажку, а они весьма доступны в почтовых ящиках, он с той же легкостью узнает всю твою телефонную историю. Лично мне Московский подход нравиться больше, в крайнем случае, можно обратиться за детализацией.

(3 comments | Leave a comment)

June 4th, 2007


12:54 pm - Усадьба. Джаз
Выходные провел на "Усадьба. Джаз"  в Архангелськом. Было много замечательной музыки и хорошего настроения.

Вершиной фестиваля стало выступление Маркуса Миллера, я ожидал чумовую музыку и великолепное исполнение, но он перекрыл все мои ожидания. То, что я увидел, было чистым волшебством. Это было шикарно, и даже еще и еще лучше :)

Кстати, благодаря футболке "Я с Урала" я попал в историю.

(1 comment | Leave a comment)

May 31st, 2007


05:23 pm - Сюрпризы продолжаются
Гугл сделал поиск по карте на русском языке.

(5 comments | Leave a comment)

May 28th, 2007


11:53 am

Вчера встречался с Вагановым Сергеем Александровичем. Замечательный человек! Я ему был студентом, дипломником, и, наконец подчиненным.

Кстати, этот человек устроил мне знакомство с велопоходами. Похвалюсь: моей первой покатушкой был двухдневный заезд по горам на 190 км, вел был с заклиненной вилкой, до сих пор не представляю как я это пережил.

А вот что пишет Надя.


(5 comments | Leave a comment)

11:29 am - Империя наносит ответный удар
Гугл выложил карты российских городов.

(4 comments | Leave a comment)

May 17th, 2007


11:48 am - Впечатления
Вчера ходил в Дом музыки , на "Hammond meets Klais" - Классический и джазовый орган Джой ДеФранческо и Черри Роудс.

Весьма впечатлен. Вообще, если честно, мне больше понравилось исполнение ДеФранческо (я вообще люблю джаз). Хотя надо отдать должное и классическому исполнению, а та композиция, которую Роудс сыграла на бис, меня просто поразила, мне сказали, что я хлопал как сумашедший.

(Leave a comment)

May 11th, 2007


02:35 pm - Для меня
Сделать шаг к пропасти, сложней чем прыгнуть в неё.

(Leave a comment)

January 16th, 2007


07:37 pm
В воскресенье арендодатели установили стиральную машину фирмы Indesit. Ей года 3, наверное. Для более детального знакомства с объектом решил добыть руководство пользователя. И... то ли не там, то ли не так искал, но нашел только за деньги. А на сайте производителя такой модели вообще не знают, там все что старее года, то не существует. Это заговор, точно заговор!

Видимо развивать отношения придется исключительно по наитию.

(Leave a comment)

01:27 pm - Последние просмотренные:
Жара - 4,0
Волкодав - 3,5
Ночь в музее - 3,5
Следопыт - 3,0

(Leave a comment)

> previous 20 entries
> Go to Top
LiveJournal.com