ClojureScript アプリで大きな JSON ファイル (基本的にツリーのような構造を含む) を操作しています。基本的に、私はそのツリー構造のすべての要素を反復処理しますが、これらはかなりの数の操作です。ここで、Lazy Hash マップの処理によってどれだけのオーバーヘッドが発生するのだろうかと考えています。
基本的に私は:
- AJAX 経由で JSON ファイルをロードする
- ブラウザを使用してJSオブジェクトに変換します
JSON.parse
js->clj :keywordize-keys true
それをclojure構造に変換するために使用します
JSON の構造は、ネストされたリストとハッシュ マップで構成されます。何かのようなもの
{:A-key-a [{:B-key-a 34 :B-key-b [213. 23.4]}
{:B-key-a 34 :B-key-b [213. 23.4]}
...]
:A-key-b [{:someother-a 30 ...}
...]
...}
ここで、速度を上げるために JS オブジェクトを直接使用するようにフォールバックする必要があるかどうか疑問に思います。直感的には、これは ClojureScript オブジェクトよりも高速であると思いますが、時期尚早に最適化したくないし、遅延評価によって導入されるオーバーヘッドを判断するために ClojureScript の内部について十分に知りません。
.-mykey
その特定のソースコードを書き直すために、アクセサー構文とGoogleクロージャーforeach関数を使用できると思います。どう思いますか?
同様の最適化トピックでClojureScript プログラムのパフォーマンスを改善するを見たことがありますが、これloop .. recur
はループの実行可能なオプションであるように思われることも意味していると思います。そうですか?