-
Notifications
You must be signed in to change notification settings - Fork 0
Transferable
uupaa edited this page Jun 11, 2015
·
3 revisions
Thread#post(args) や ThreadProxy#post(args) の args の値は、実は毎回コピーが行われています。
この仕組は Structured clone と呼ばれています。
この Structured clone によるクローニングは少量のデータにおいては十分に高速ですが、送信するデータが増えると物量に比例して遅くなってしまいます。
- 画像処理やデコードの結果など、大量のメモリを扱う場合はどうしたら?
- 大量のデータを扱ってもパフォーマンスは大丈夫?
と心配する方もいるでしょう。
Thread.js は Transferable Object をサポートしており、この仕組を使うとメモリをコピーせず、所有権だけを他のスレッドに譲渡することができます。
(C/C++をご存知の方はメモリのアドレスを渡す…と考えるとイメージを掴みやすいでしょうか)
Transferable Object を使うと、不要なメモリコピーを抑止することができます。
大きなメモリをスレッド間で移動させる場合は、できるだけ利用するようにしてください。