07.02.2013, 06:45
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Дзен-трансгуманист, да ты мастер обфускации ))
Скрипты наверно эффективнее через тебя пропускать, нежели через какой-нибудь компрессор-минификатор
|
|
07.02.2013, 11:16
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от Дзен-трансгуманист
|
Считай это естественным тестом на профпригодность, который было бы обидно не пройти.
|
Считай, что ты только что унизил всех людей, которые не понимают зачем нужно писать код непонятно, когда можно писать его понятно и в ответ все эти люди назвали тебя козлом.
Насколько мне известно применение побитовых операций в js не приводит к увеличению скорости, а скорее наоборот. Поэтому ты добавил тормоза в программу и оправдываешь их инженерным образованием.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Последний раз редактировалось Gozar, 07.02.2013 в 11:19.
|
|
07.02.2013, 11:49
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от Gozar
|
Насколько мне известно применение побитовых операций в js не приводит к увеличению скорости, а скорее наоборот.
|
Тут можно еще поспорить:
function test1(defs) {
return {1:0, 2:2, 4:1}[defs];
}
function test2(defs) {
return (defs & ~1) % 3;
}
function test3(defs) {
return [0,0,2,,1][defs];
}
var lastTime=(new Date()).getTime();
for(var i = 0; i < 100000; i++) {
test1(i & 1);
}
alert("Время заняло с использованием объекта (ms): " + ((new Date()).getTime()-lastTime));
var lastTime=(new Date()).getTime();
for(var i = 0; i < 100000; i++) {
test2(i & 1);
}
alert("Время заняло с использованием битов (ms): " + ((new Date()).getTime()-lastTime));
var lastTime=(new Date()).getTime();
for(var i = 0; i < 100000; i++) {
test3(i & 1);
}
alert("Время заняло с использованием массива (ms): " + ((new Date()).getTime()-lastTime));
Opera 12.13:
Время заняло с использованием объекта (ms): 61
Время заняло с использованием битов (ms): 17
Время заняло с использованием массива (ms): 20
Последний раз редактировалось devote, 07.02.2013 в 11:51.
|
|
07.02.2013, 11:56
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
пример с массивом и битами работают почти с одинаковой скоростью... Хотя если позапускать несколько раз, то видно что идентичны.. Но вот с объектами все намного хуже.
Можно провести тест со свитчем:
function test1(defs) {
switch(defs) {
case 1:
return 0;
case 2:
return 2;
case 4:
return 1;
deafult:
return 0;
}
}
var lastTime=(new Date()).getTime();
for(var i = 0; i < 100000; i++) {
test1(i & 1);
}
alert("Время заняло с использованием switch (ms): " + ((new Date()).getTime()-lastTime));
Opera 12.13
Время заняло с использованием switch (ms): 15
|
|
07.02.2013, 12:34
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от devote
|
Тут можно еще поспорить
|
Каюсь. Наверное стереотипы.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
07.02.2013, 12:36
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сообщение от Gozar
|
Считай, что ты только что унизил всех людей, которые не понимают зачем нужно писать код непонятно, когда можно писать его понятно
|
+. "Не заставляйте меня думать" ... там, где этого делать не надо. Тут следовало бы сделать ремарку насчет предложенного мной варианта и в коммнтульках написать, что делает код. Кстати. это можно изобразить способом, предложенным danik.js.
function test7(x) {
return x !== 2 ? x >> 2 : 2;
}
var lastTime=(new Date()).getTime();
for(var i = 0; i < 100000; i++) {
test7(i & 1);
}
alert("Время с использованием x !== 2 ? x >> 2 : 2 (ms): " + ((new Date()).getTime()-lastTime));
return (e.button & ~1) % 3;
// 1. ~1
// 2. e.button & x
// 3. x % 3;
Сообщение от Gozar
|
Насколько мне известно применение побитовых операций в js не приводит к увеличению скорости, а скорее наоборот.
|
слышал информацию на этот счет. Мое мнение - все меняется настолько быстро, ничему верить нельзя (в плане производительности). Тесты, тесты, тесты. При этом не факт, что если сегодня быстро, то завтра (код не трогаем, меняется только браузер ... внутри) не будет медленно и наоборот.
Сообщение от danik.js
|
предложили какие то непонятные решения для определения e.button.
|
в моем все просто и очевидно (как мне кажется), но не настолько наглядно, как в "твоем"
Если принимать во внимание, что события мыши могу обрабатываться довольно часто, то решение с объектом, пускай и наглядным, приведет к лишним задр*чкам и в без того медленном IE. Впрочем, надо тестировать...
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Последний раз редактировалось nerv_, 07.02.2013 в 12:47.
|
|
08.02.2013, 00:02
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от Дзен-трансгуманист
|
твои эмоции на мой личный счет
|
У меня нет эмоций на твой счет.
Сообщение от Дзен-трансгуманист
|
больше не буду
|
Сообщение от Дзен-трансгуманист
|
детский сад
|
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
08.02.2013, 03:30
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сообщение от Дзен-трансгуманист
|
Извини за оффтоп
|
не переживай на этот счет
Ну, а Gozar он добрый и пушистый (особенно когда не бреется). Только тщательно это скрывает
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
10.04.2014, 18:29
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Object.create() IE9,10 bug
Bug
var obj = Object.create({}.constructor.prototype);
//var obj = Object.create(Object.getPrototypeOf({}));
//var obj = {};
obj['0'] = null;
obj['1'] = null;
alert(obj.hasOwnProperty('0')); // IE9,10 - false
alert(obj.hasOwnProperty('1')); // IE9,10 - false
Fix
var obj = Object.create({}.constructor.prototype);
//var obj = Object.create(Object.getPrototypeOf({}));
//var obj = {};
obj['0'] = null;
obj['1'] = null;
obj['x'] = null; // fix
alert(obj.hasOwnProperty('0')); // true
alert(obj.hasOwnProperty('1')); // true
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
10.04.2014, 18:55
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
Жесть… я только начинал верить в IE в 11 версии не исправили
------------
причем, если сразу же удалить fix, то баг останется, поэтому вот такой декоратор для Object.create не прокатил:
//IE9-11 Object.create bug fix
(function () {
var object = Object.create({});
object[0] = null;
return object.hasOwnProperty(0); //→ false in IE9-11
}()) || (Object.create = new function () {
var create = Object.create;
return function (prototype, properties) {
var object = create(prototype, properties);
object[0] = null;
object.fix = null;
delete object[0];
//delete object.fix; //нельзя удалять!
return object;
};
});
придется фиксить так:
//IE9-11 Object.create bug fix
(function () {
var object = Object.create({});
object[0] = null;
return object.hasOwnProperty(0); //→ false in IE9-11
}()) || new function () {
var create = Object.create;
Object.create = function (prototype, properties) {
function NOP() {}
NOP.prototype = prototype;
//Object.defineProperties fixes a bug
return properties ? create(prototype, properties) : new NOP;
};
};
Последний раз редактировалось Octane, 10.04.2014 в 20:44.
|
|
|
|