![Flashを閃光のごとく高速化するための基礎知識](https://cdn-ak-scissors.b.st-hatena.com/image/square/3cd1a332622ac5294655e54ac932c9a8974feea5/height=288;version=1;width=512/https%3A%2F%2Fimage.itmedia.co.jp%2Fait%2Farticles%2F1003%2F09%2Fr1201.jpg)
ビット演算(ビットえんざん)とは、 ひとつあるいはふたつのビットパターンまたは二進数を個々のビットの列として操作することである。 CPUからすればビット演算は簡単な論理回路で実現できるが、 四則演算、特に乗除算は複雑な論理回路を必要とするため、 多くのコンピュータでは、ビット演算は加減算より若干速く、乗除算よりずっと高速である。 Wikipedia(ビット演算) より AS3 でもビット演算で高速化するなどという Tips をよく見かけたりします。 早いのはわかったけど「なぜそうなるのか。」「実際どんな場面で使ったりするものなのか」などはなかなか書いてなかったり。 なので今回は例を含めつつ、説明していこうと思います。 「得意な人はより得意に、そうでない人はそれなりに」を目指します。 二進法 苦手な人はいきなりブラウザバックしたくなる話だと思いますが少し我慢してください。 二進法
下のデモでは赤い円を障害物と見立て、円に衝突しないように左上から右下まで最短ルートを求めて緑の線を引いています。 赤い円はマウスで移動できます。移動するごとにルートを再探索します。 次の手順でルートを探索しています。 1. 赤い円の位置を元に四分木を構成。(黒い線が四分木の境界です) 2. 四分木の領域の中心点を頂点と見立ててグラフを構築。領域同士が隣あっている場合頂点同士を結んで辺とする。(青い線がグラフの辺です) 3. 構築されたグラフを元にダイクストラ法で最短路を探索。(頂点間の距離を辺の重みとしています) 障害物がない部分では四分木の領域が広くなるため、必ずしも領域の中心位置が最短の経路上にくるとは限りません。 したがってこの方法で求めた経路が平面状の最短距離にはなりませんが、四分木の領域が広いということはグラフの頂点の数が減るわけですから 経路を求める際の計算量は少なくなることに
SiONをWonderflにライブラリとして登録していただいて以来,様々な方に試していただき本当にありがとうございます(Wonderf以前から試して貰ってる超ヘビー級ギークもいますが). 折角,Wonderflというすばらしい試用環境ができたのに,現状spark project wikiのしょっぼいドキュメントしか無く手探りで試して頂いている状況なので,ブログでちょこちょこと推敲中の解説エントリを書いていこうかなと思います.最終的にはどこか(多分SparkProject)にまとまった文章として置くつもりでいます.以下,予定タイトルですが随時変更していきます.また,このエントリをインデックスとして利用する予定です. 0. SiON 概要 1. SiON の主なクラス 2. SiON で音を鳴らす 3. SiON と DisplayObject の連携 4. 音と映像とインターフェイスの連携
Flash | Dateオブジェクトのソート 僕が実装を担当したFlashに重大なバグが見つかった。しかもリリースの半日くらい前に。そしてそのバグはなかなか再現しない。少なくとも自分の環境では発生させることができず、まったく原因が分からなかった。 結局リリースまでに原因が判明せず、再現性が低いのでとりあえずリリース。が、アクセスの多いサイトだったので、確立は低いとは言えバグに遭遇するユーザもそれなりにいるわけで・・・ 昨日の夜になってようやく再現環境を作ることができ、今朝バグを解決。原因は僕の勝手な思い込みだった。 var aug2:Date = new Date(2009, 7, 2); var aug3:Date = new Date(2009, 7, 3); var aug4:Date = new Date(2009, 7, 4); trace(aug2 例えば上のコード。最後の
Math.abs()を使わず絶対値を求める Absolute value //version 1 i = x < 0 ? -x : x; //version 2 i = (x ^ (x >> 31)) - (x >> 31); この単純なコードでなんと2,500%高速化。さらにビット演算を組み合わせるとさらに加えて20%高速化。 http://actionscript.g.hatena.ne.jp/ConquestArrow/20070621/1182359767 これがちょっと気になったので調べてみた。 パターン ケース1(単純にMath.abs) b = Math.abs(a); ケース2(三項演算子) b = a < 0 ? -a : a; ケース3(if) if (a < 0) { b = -a; } else { b = a; } ケース4(ケース2を外部関数化) private
note.xさんのところで紹介されていた新種の3D物理エンジン「JigLibFlash」と、滑らかに追随するPapervision3Dの「SpringCamera3D」が相性がよさそうだったので、組み合わせたデモを作ってみたらなかなかいい感じのものが仕上がりました。 レーシングデモ(Google CodeのデモをSpringCamera3Dで作り変えたもの)。キーボードのカーソル(上下右左で操作ができます) demo (require Flash Player 10) source (Flex SDK Project, zip) 物理エンジンボールデモ。キーボードのカーソル(上下右左で移動、スペースキーでジャンプ) demo (require Flash Player 10) source (Flex SDK Project, zip) 3Dボールアドベンチャー 日ごろのフィードリーダーで
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く