Pot.js
2012-03-13 追記:
Pot.js 1.15 と PotLite.js 1.33 はバギーなためアップデートしました。詳細
2012-03-13 時点の最新は Pot.js 1.16 と PotLite.js 1.34 です。最新にアップデートお願いします。。
Pot.js 1.15 と PotLite.js 1.33 はバギーなためアップデートしました。詳細
2012-03-13 時点の最新は Pot.js 1.16 と PotLite.js 1.34 です。最新にアップデートお願いします。。
このバージョンでは、
- 文字列処理の高速化
- 重くなりそうな処理を非同期化
文字列処理の高速化
先日、ふと思って String.fromCharCode を呼ばずにU+0000 - U+FFFF の配列をあらかじめ作成して インデックスに対応させたらどうなのかなって
ベンチマークとってみました。
結果として、String.fromCharCode(c) のような
apply で配列を使わない場合、かなり高速化できました。
メモリ消費も文字列などは気にするほどじゃなかった。
String.fromCharCode.apply(null, [...]); のような場合は逆に遅くなるので
従来通り String.fromCharCode を使用しています。
(この件はあほなミスをしてて@gochoさんにつっこまれて助かりました)
重くなりそうな処理を非同期化
重くなりそうな処理とは、巨大な文字列が渡される可能性のある関数や、ループ回数が未知の処理などです。
途中で「応答のないスクリプト」警告なんぞ でてしまったらめんどうです。
そういった対処や負荷軽減も含めて 関数オブジェクトに deferred というメソッドを持たせました。
例えば Pot.md5(string); が同期実行に対して
Pot.md5.deferred(string); は、非同期で実行します。
- Pot.md5 非同期実行のサンプル:http://jsfiddle.net/polygonplanet/6e2E5/
圧縮・解凍
文字列を LZ77 アルゴリズムをベースに圧縮・解凍するPot.Archive.AlphamericString も同様に非同期化しています。
- Pot.Archive.AlphamericString 非同期実行のサンプル:http://jsfiddle.net/polygonplanet/aT3hT/
その他のサンプル
他にもいくつかテスト用にサンプルがあったので紹介します。- HTML の適した場所にhttp://jsfiddle.net/polygonplanet/78Q7d/
を挿入する Pot.br() : - 文字列の置換代行 :http://jsfiddle.net/polygonplanet/RExAS/
Pot.js / PotLite.js
Pot.js は CPU に負荷をかけることなく JavaScript の実行を可能とするユーティリティライブラリです。PotLite.js は Pot.js の非同期な部分だけを抽出したライトバージョンです。
ダウンロード
マニュアル
その他の情報についてはマニュアル/マニュアルからのリンク から参照ください。
レポジトリ
その他、なにか問題・バグ・感想・指摘などあれば、
コメントやメールまたは @polygon_planet まで送っていただけるとうれしいです。
0 件のコメント:
コメントを投稿