« 「あっちの足おと」に変更 | メイン | resource 要素の解説(予告) »

_prefetch()関数とresourceエレメントの話(2006/10/18)

Quidam UJMLの<resource>要素については詳しく解説する必要があるのだが、その解説は後に回し、今回は_prefetch()関数と<resource>要素の違いについて簡単に解説する。

 まず、<resource>要素により指定されたURLのリソースがロードされる場合の動作は簡単に書くと、

1.URLに指定された位置からリソース(画像等)をロードする。
2.ロードしたものをメモリ中に展開する。

の2ステップ。_prefetch()は2が無く1のみ。_prefetch()されたリソースがどこに行くかと言えば、デバイスのローカルファイルシステム内に保存される、つまりキャッシュされるということ。UIEngineではキャッシュされたものは明示的に指定しない限り基本的には消えないので、_prefetch()したリソースを使用するとき、ローカルファイルシステムからメモリ中に展開されるので軽快に動作するということだ。(軽快にというのはネットワーク上等、離れた位置にあるリソースを取りにいくのと比べてということ)

 <resource>要素もロードされた時点でローカルファイルシステム内に保存される。両者の使い分けとしては、

すぐ使う→<resource>要素を使用
後で使う(これから使う予定があるので今のうちに取得しておく)→_prefetch()関数を使用

という考えて良いだろう。しかしメモリ管理を開発者がしっかりしなければならない状況では、上の判断基準ではまずいだろうが。

[追記]Satoshiさんから指摘頂き、コメントに欄に重要な_prefetch()と<resource>の違いが書いてあるのでそちらも参照して欲しい。Satoshiさんありがとうございました。

トラックバック

この記事のトラックバックURL:
https://www.typepad.com/services/trackback/6a00d8341c2e2e53ef00e5506f9f5d8833

_prefetch()関数とresourceエレメントの話を参照しているブログ:

コメント

Satoshi

 _prefetchは、「これから使う予定があるから、今のうちにサーバーからロードしてキャッシュしておいて。でも、いつキャッシュから追い出すかはまかせるよ。」という意味です。

 それに対して、は、「これらのリソースに関しては、どのくらいの期間ローカルにキャッシュされているべきか自分で管理するのでよろしく」という意味です。

 

UIEngineだ

Satoshiさん

ご指摘ありがとうございます。_prefetch()について、キャッシュの管理もPlayerまかせにできるとは、勉強になります。

言語リファレンスでは_prefetch()、_discard()、リソース、といった項でメモリとキャッシュの用語の使い方がわかりにくい気がします。

この記事へのコメントは終了しました。