![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
|
А я помню как Nox Noctis переписывал два листа кодов Дебройла : ) Но все вышло очень красиво в итоге.
Спасибо за разъяснения, BitSky, ты это сильно задвинул, но теперь все понятно. Спасибо большое : ) Nox Noctis, так ты из ленингаарда? Может я когда-нибудь угощу тебя пивом? ![]() |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
нимало не возражаю.. отметим выход второго издания Мука что ли...
![]() Последний раз редактировалось Nox Noctis; 20.04.2004 в 17:47. |
|
|||||
|
Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
|
2 Nox Noctis: Супер
Отличный повод! Экземпляр для меня подпишешь? Я тебе email'ю, окей?2 BitSky: Спасибо еще раз. Я все глубже постигаю твой пример. Сила : ) |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
неспортивно чужие книжки подписывать
вон давай к Иву в очередь за автографами лучше встанем ![]() |
|
|||||
|
Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
|
Иву? а это кто?
// а Ivan Dembicki : ) Да, истый флешер : ) Последний раз редактировалось dm_nev; 20.04.2004 в 19:41. |
|
|||||
|
Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
|
Позвольте, я еще покажу вам один код по наитию Мука.
Вот что он мне поручил: "Прикрепите нечувствительную функцию сортировки по алфавиту к классу Array в качестве наследуемого метода." Тогда у меня и возник вопрос по области видимости аргументов. Такая не слишком корявая? |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
такая оч пральная
|
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
вобщем-то всё правильно и работает.
но. имха, не стоит отступать от буквы мануала там где это не принципиально :) ведь сказано же: Цитата:
1. твой вариант. Array.prototype.compareFunction = function(element1, element2) {
return (element1.toLowerCase()>element2.toLowerCase());
};
Array.prototype.sortbyAlph = function() {
this.sort(this.compareFunction);
};
//
x = [];
for (var i = 0; i<100; i++) {
x.push(chr(32+i));
}
//
heap = [];
for (var i = 0; i<10; i++) {
heap.push(x.concat());
}
var s = getTimer();
for (var i = 0; i<10; i++) {
heap[i].sortbyAlph();
}
var e = getTimer();
trace(e-s);
Array.prototype.compareFunction = function(element1, element2) {
var e1 = element1.toLowerCase();
var e2 = element2.toLowerCase();
return Number(e1<e2 || (e1>e2)*(-1));
};
Array.prototype.sortbyAlph = function() {
this.sort(this.compareFunction);
};
//
x = [];
for (var i = 0; i<100; i++) {
x.push(chr(32+i));
}
//
heap = [];
for (var i = 0; i<10; i++) {
heap.push(x.concat());
}
var s = getTimer();
for (var i = 0; i<10; i++) {
heap[i].sortbyAlph();
heap[i].reverse();
}
var e = getTimer();
trace(e-s);
причем это взят массив всего в 100 элементов, состоящий из чаров. если возьмем строки длиной больше 1 - разница будет еще существеннее, что-то мне подсказывает. (не проверял) Последний раз редактировалось Nox Noctis; 21.04.2004 в 01:46. |
|
|||||
|
Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
|
Nox Noctis, твоя compareFunction - гимн остроумию, но вот результаты моих пяти тестов:
У меня trace(e-s): 4859 4897 4834 4905 5048 У тебя trace(e-s): 6908 6838 6863 6815 6828 Хотя твой пример должен отрабатывать совершенно точно быстрее. (??) У меня еще два вопроса: a)Зачем нужна heap[i].reverse() в твоем примере? b)Странная строчка "heap.push(x.concat())", Moock said, concat() должен принимать аргументы и возвращать новый массив. Reference said: "concat returns: Nothing". кому верить? |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
тупо копирую код, который выше и проверяю:
вариант 1: 3378 3371 3608 3604 3355 вариант 2: 2836 2858 2844 2823 2853 тако бенчмарк не корректен до истинных числовых значений, потому что у меня тут еще до фига всего работает. но условия, в которых выполняется скрипт - точно одни и те же. пожтому сравнивать вполне уместно. ээ... я неспроста основные сведения о конфигурации компа на котором тестил написал. ты на каком компе проверял ? вопрос а) реверс нужен потму что иначе сортировка идет в нисходящем порядке :) а надо в восходящем. признаю, я скопировал код из своей работы, а не писал его заново :) вопрос б) конкат() - это простой способ скопироваьт массив. получить копию массива без прямого перебора :) не верь мануалу, мук дело говорит :) конкат слепливает исходный массив и то который в параметре. а если в параметре пусто - то возвращается НОВЫЙ массив, содержащий все эелементы исходного. |
![]() |
Часовой пояс GMT +4, время: 09:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|