Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 23.12.2011, 11:14
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Сообщение от melky
проверку на нечётность не напоминает ? таким образом , <число> & 1 эквивалентно проверке числа на нечётность. (<число> % 2)
Особое спасибо за вот этот момент.
Ответить с цитированием
  #12 (permalink)  
Старый 23.12.2011, 11:17
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

я опустил такие уточнения, вроде "Boolean(1) будет true". надеюсь, всем будет понятно то, что я описал.

PS. кстати, имя темы говорит об увеличении производительности в 20 раз, а на практике коэффициент меняется от 1.82 (FF) до 2.5 (CH)

Последний раз редактировалось melky, 23.12.2011 в 11:22.
Ответить с цитированием
  #13 (permalink)  
Старый 23.12.2011, 11:37
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

melky, жаль не могу плюсануть рейтиг за столь исчерпывающий пост, форум не позволяет. Хотел бы кое-что добавить по сдвигам.
alert(16 >> 1); // 16 / 2
alert(16 << 1); // 16 * 2

Насколько мне известно, побитовые сдвиги - одни из самых быстрых операций в компутере
Сообщение от melky
PS. кстати, имя темы говорит об увеличении производительности в 20 раз, а на практике коэффициент меняется от 1.82 (FF) до 2.5 (CH)
Да эт сразу понятно было, что утка.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 23.12.2011 в 11:41.
Ответить с цитированием
  #14 (permalink)  
Старый 23.12.2011, 11:46
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от melky
похоже на итератор (--,++)
Что? a >> i — деление a на 2^i с отбрасыванием остатка же.

Последний раз редактировалось B@rmaley.e><e, 23.12.2011 в 12:18.
Ответить с цитированием
  #15 (permalink)  
Старый 23.12.2011, 12:21
Аспирант
Отправить личное сообщение для m4gz Посмотреть профиль Найти все сообщения от m4gz
 
Регистрация: 27.10.2011
Сообщений: 43

Да наверно перегнул, посмотрев на их результаты, но в любом случаем чем больше данных обрабатываем тем больше и прирост
Ответить с цитированием
  #16 (permalink)  
Старый 23.12.2011, 12:38
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

melky, что ж вы как декремент обидели. Он может быть в 2-2.5 раза быстрее.
function stringFill2(x, n){ 
	var s = x, needLength = x.length * n;
	while(s.length < needLength)
		s += s;
	return s.substr(0,needLength);
}
Хотя это уже и не декремет вовсе получается, блин...
Но этот способ не так сильно отстаёт от побитового.

Последний раз редактировалось GuardCat, 23.12.2011 в 12:43.
Ответить с цитированием
  #17 (permalink)  
Старый 23.12.2011, 12:52
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

В продолжении темы
Сообщение от melky
операция <число> & 1 будет возвращать 1 для тех чисел, у которых последняя цифра (1 для 5, 0 для 4) совпадает с 1
Думаю, в данном случае, это можно обозвать как "проверка бит по маске", хотя чаще используют их сброс или установку. Не самый удачный пример, но тем не менее
// Преобразование строки (lat.) в верхний регистр с помощью побитового оператора и (&), т.е. сброс бит по маске
// ----------------------
// имеем символ "a", код:  01100001 (97)
// сброс бит по маске:     11011111 (223)
// итог - символ "A", код: 01000001 (65)
// ----------------------
var x = prompt("Введите тект английскими буквами в нижнем регистре", "melky")
for(var j = [], i = 0; i < x.length; i++) {
	j[i] = x.charAt(i).charCodeAt(); // получить символ и его код
	j[i] &= 223; // сброс бит по маске 11011111 (двоичное представление числа 223)
	j[i] = String.fromCharCode(j[i]); // получить символ из таблицы Unicode-символов
}
alert(j.join(""));
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 23.12.2011 в 12:56.
Ответить с цитированием
  #18 (permalink)  
Старый 23.12.2011, 18:16
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от B@rmaley.e><e Посмотреть сообщение
Что? a >> i — деление a на 2^i с отбрасыванием остатка же.
ключевые слова похоже и итератор
спасибо. не знал!
Ответить с цитированием
  #19 (permalink)  
Старый 26.03.2012, 12:32
Аспирант
Отправить личное сообщение для m4gz Посмотреть профиль Найти все сообщения от m4gz
 
Регистрация: 27.10.2011
Сообщений: 43

А есть ли возможность перевести поиск по тексту на такой принцип? и будет ли он эффективнее регулярных выражений?
Ответить с цитированием
  #20 (permalink)  
Старый 26.03.2012, 16:19
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от m4gz
А есть ли возможность перевести поиск по тексту на такой принцип?
Посимвольным считыванием потока данных занимаются конечные автоматы
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен javascript или нет? 0931454574 (X)HTML/CSS 11 09.09.2011 00:32
Работа с radiobutton djsadd Элементы интерфейса 2 06.04.2011 08:37
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
Оптимизация и разбор javascript! o55rus Общие вопросы Javascript 2 23.09.2008 20:33