Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Побитовые операции. (http://www.flasher.ru/forum/showthread.php?t=206059)

ZackMercury 09.01.2014 22:25

Побитовые операции.
 
Вложений: 1
Читал статейки по оптимизации, и наткнулся на то, что загрузил во вложении.
И тут меня вдруг передернуло. Вспомнилась глава об операторах в книге Мука.
Побитовые операторы >> <<, и просто битовые, или и и(вроде там так было). Загуглил, но споткнулся о то, что с битами выходит туговато. Может мне объяснит суть того, что на скриншоте? Я в корне не понимаю этих операций.
И заодно хотел бы узнать больше о побитовых операциях, где они используются и чем занимаются?

Akopalipsis 09.01.2014 22:32

По скорости разницы нет, а значит, если и использовать, то не для расчётов.
Вот тут есть пример http://flashpress.ru/blog/bit-mask/

alexcon314 09.01.2014 23:05

http://www.flasher.ru/forum/blog.php?b=227
http://www.flasher.ru/forum/blog.php?b=235

expl 09.01.2014 23:12

Цитата:

По скорости разницы нет, а значит, если и использовать, то не для расчётов.
Теоретически сдвиг работает быстрее, т.к. требует меньше тактов процессора, чем честное деление
Практически, кстати, тоже на флеше может дать прирост, хотя может и не дать, потому что:
- не будет заметен на фоне тормознутости других операций
- выражение / 2 может быть преобразовано компилятором в сдвиг (хотя mxmlc туповат, сомневаюсь)
- байткод, соответствующий / 2 может быть преобразован рантайм-компилятором в сдвиг
- часто скорость зависит больше от времени доступа к данным (попадут ли в кеш процессора), чем от количества тактов на собственно обработку

Где используются, если не для производительности:
- получение значения цвета по составляющим RGB
- самописная сериализация/десериализация данных (наверняка в коде ProtoBuf для as3 эти операторы найдете) - просто ими запихивают несколько значений в один байт (BiteArray биты то не принимает) или заталкивают 32-битное число в 16 бит, если оно небольшое :) (например в AMF 3).
- в алгоритмах чтения/записи других бинарных форматов (png, например) тоже наверняка найдёте

dimarik 09.01.2014 23:21

Сдвиг работает быстрее (статья 2007 года, тесты на текущем компиляторе и рантайме сделайте сами)

alexcon314 09.01.2014 23:34

Оптимизация за счет битовых операций в математических вычислениях - это не то, ради чего они действительно нужны.
Вот при работе с данными можно поиметь профит: объем по-ужать, обработать по-шустрее, это да.

ZackMercury 09.01.2014 23:47

Цитата:

Вот при работе с данными
Например, какими такими данными?
Любая переменная хранит в себе данные. Будь то строка, целое число или буль.

Добавлено через 1 минуту
Цитата:

Вот тут есть пример http://flashpress.ru/blog/bit-mask/
Спасибо, вкусная ссылочка. Уже прочитал первые абзацы, почитаю перед сном.

Akopalipsis 09.01.2014 23:49

А почему и на скрине ТС и в статьях, используется int? Number не кто не использует?

ZackMercury 09.01.2014 23:59

Цитата:

Сообщение от Akopalipsis (Сообщение 1156879)
А почему и на скрине ТС и в статьях, используется int? Number не кто не использует?

Что? Number в цикле? :о
Зачем он там нужен?
Кроме того, вот тут даже ругают за это, в целях всеобщей оптимизации.

alexcon314 10.01.2014 00:01

Цитата:

Например, какими такими данными?
С бинарными, очевидно.


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

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