Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.01.2012, 13:39
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 31  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от i.o. Посмотреть сообщение
O_O
Пруф в студию.
Хм, в 2008-ом Блуд говорил и показывал сорсы тамарина, в котором RegExp реализовывался именно на AS3.
А вот тут уже нет: http://mod-actionscript.googlecode.c...-central/core/
Там уже используется сишный pcre. Это гут, но всё равно против лома нет приёма.

Старый 13.01.2012, 14:32
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 32  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Я в принципе не понимаю как регэксп может быть быстрее. Это из серии "если написать код в одну строчку, то будет же быстрее?" Как ни верти, а операции с данными все-равно надо произвести, магии и мистики ждать не приходится. В случае сабстринга мы конкретно говорим - возьми с такого-то индекса столько-то байт. Всё. А что должен сделать регэксп? На одном определении "число/не число" уже несколько дополнительных операций. На разборе сколько до и сколько после - еще пачка. Регэксп это не телепатия, а те же самые операции. Только в 10 раз больше, как всегда при "универсальности".

Добавлено через 9 минут
Предназначение регэкспа - поиск и извлечение по шаблону. В этой задаче нечего искать. Сабстринг не предлагает что-то искать, он называет конкретные индексы сразу. А все остальное – конкатенация – выполняется в лучшем случае точно так же (теми же машинными операциями), а возможно и гораздо проще в случае сабстринга. То, что виден вызов одной функции, не означает скорости. Сколько операций внутри этой функции? "один реплейс" может содержать сотни. А сабстринг он и есть сабстринг))
__________________
Reality.getBounds(this);

Старый 13.01.2012, 17:22
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 33  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
В теории регексп может быть быстрее или сопоставим. substring / серия других AS3 функций могут быть выполнены как опкоды виртуальной машины (а не оптимизированы до машинных кодов), в то время как регулярное выражение может быть скомпилировано (и доведено до "совершенства") компилятором. В менее тривиальных случаях, например, в JS регулярные выражения могут быть быстрее аналогичного кода на JS просто потому, что скомпилировать JS будет дольше и менее производительно, чем выражение (кстати, в V8 регулярки вообще всех рвут, даже Перл).
__________________
Hell is the possibility of sanity

Старый 13.01.2012, 18:32
zuxul вне форума Посмотреть профиль Отправить личное сообщение для zuxul Найти все сообщения от zuxul
  № 34  
Ответить с цитированием
zuxul

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
Просветите пожалуйста, что такое V8 ?

Старый 13.01.2012, 19:07
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 35  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от zuxul Посмотреть сообщение
Просветите пожалуйста, что такое V8 ?
http://ru.wikipedia.org/wiki/V8_(движок_JavaScript)


Последний раз редактировалось etc; 13.01.2012 в 19:17.
Старый 13.01.2012, 19:36
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 36  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код AS3:
private static const _pattern:ByteArray = new ByteArray();
 
private static const _separator:int = 0x2E;
 
private static const _asciiZero:int = 0x30;
 
private static function format(digit:uint):String
{
	var reminder:uint = digit;
	var index:int = 12;
 
	_pattern.length = 13;
	while (index > -1)
	{
		reminder = digit;
		digit = binaryDiv10(digit);
		reminder -= (digit << 3) + (digit << 1);
		if (((index + 1) & 2) == 2)
			_pattern[index--] = _separator;
		_pattern[index--] = _asciiZero + reminder;
	}
	return _pattern.toString();
}
 
private static function binaryDiv10(divident:uint):uint
{
	var divisor:uint = 10;
	var multiplier:uint = 1;
	var quotient:uint;
	var reminder:uint;
 
	if (divident < 10) return 0;
	while ((divisor <<= 1) < divident && multiplier < 28)
		multiplier++;
	divident -= (divisor >>>= 1);
	quotient = 1 << (multiplier - 1);
	multiplier = quotient;
	while (divident)
	{
		while ((divisor >>>= 1) > divident) multiplier >>>= 1;
		divident -= divisor;
		quotient += (multiplier >>>= 1);
	}
	return quotient;
}
Вариант с удвоенным количеством извращений Я чет не могу сообразить вот только, как параллельно с делением псчитать остаток %)
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 13.01.2012 в 19:41.
Старый 14.01.2012, 00:23
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 37  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
wvxvw, а что это вообще? <_<

Старый 14.01.2012, 01:47
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 38  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Функция format(x) возвращает строку вида хх.ххх.ххх.ххх.хх где каждый х - разряд в десятичной системе счисления, что собственно, автор и хотел. Она кстати будет по-быстрее, чем вариант с регулярным выражением, а если задесйствовать fastmemory + немного инлайна, то может и сравнима с substring() При этом используется только побитовый сдвиг, прибавление, отнимание и логические операции.
__________________
Hell is the possibility of sanity

Старый 14.01.2012, 02:11
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 39  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Код AS3:
private static const _separator:int = 0x2E;
 
private static const _asciiZero:int = 0x30;
wvxvw, а это что есть за загадочные (только для меня?) переменные?
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 14.01.2012, 03:06
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 40  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Коды символов точки и нуля.
__________________
משיח לא בא
משיח גם לא מטלפן

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
regexp

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:18.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.