Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 07.02.2013, 06:45
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Дзен-трансгуманист, да ты мастер обфускации ))
Скрипты наверно эффективнее через тебя пропускать, нежели через какой-нибудь компрессор-минификатор
Ответить с цитированием
  #32 (permalink)  
Старый 07.02.2013, 11:16
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

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

Насколько мне известно применение побитовых операций в js не приводит к увеличению скорости, а скорее наоборот. Поэтому ты добавил тормоза в программу и оправдываешь их инженерным образованием.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 07.02.2013 в 11:19.
Ответить с цитированием
  #33 (permalink)  
Старый 07.02.2013, 11:49
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 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
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 07.02.2013 в 11:51.
Ответить с цитированием
  #34 (permalink)  
Старый 07.02.2013, 11:56
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 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
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #35 (permalink)  
Старый 07.02.2013, 12:34
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от devote
Тут можно еще поспорить
Каюсь. Наверное стереотипы.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #36 (permalink)  
Старый 07.02.2013, 12:36
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 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.
Ответить с цитированием
  #37 (permalink)  
Старый 08.02.2013, 00:02
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Дзен-трансгуманист
твои эмоции на мой личный счет
У меня нет эмоций на твой счет.

Сообщение от Дзен-трансгуманист
больше не буду
Сообщение от Дзен-трансгуманист
детский сад
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #38 (permalink)  
Старый 08.02.2013, 03:30
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Дзен-трансгуманист
Извини за оффтоп
не переживай на этот счет

Ну, а Gozar он добрый и пушистый (особенно когда не бреется). Только тщательно это скрывает
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #39 (permalink)  
Старый 10.04.2014, 18:29
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 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
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #40 (permalink)  
Старый 10.04.2014, 18:55
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 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.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт определения мобильных браузеров remkas Элементы интерфейса 0 25.10.2012 15:47
history браузеров d-kaktus Javascript под браузер 1 12.01.2012 00:31
Баги в форме добавления nemo Серверные языки и технологии 0 18.07.2010 13:35
Баги в сниппетах ответов Илья Кантор Сайт Javascript.ru 31 11.06.2009 17:58
feature request: FAQ hogart Сайт Javascript.ru 4 30.01.2009 11:53