続き....
大きなサイズのファイルをヒープに読み込むのは、時間がかかります。この問題に対処した結果、一部だけ読み込めば良いと考えるに至りました。
[KyoroTextの場合]
KyoroTextに適用した方法を紹介します。
※改善すべき点は多々ありますが、当時だした結論を紹介します。
[問題の整理]
結論だけ紹介するには、少し複雑で説明が難しいです。まずは、何を実現したいのか整理させてください。実現したい事はとても単純でした。
A) ファイルからテキストを読み込んで、それを、画面に表示したい。
と、いった感じです。
※今回は、「ファイルに詠み込む部分」がかなり重たい処理なためひと工夫必要なわけですね。
もう少し具体的に表現してみましょう。 例えば、「画面を表示担当」と、「ファイルからデータを読み込み担当」を別々に考えるとより理解しやすくなります。
[1] 表示担当は、ファイル担当から表示するデータをもらう。
| 表示担当 | -----データーください!!----> |ファイル担当|
[2] ファイル担当は、データを返す。
| 表示担当 | <--------ホラよっと--------- |ファイル担当|
かなり、簡単になりました!!
[KyoroTextの解決方法]
KyoroText採用した方法として、「ホラよっと返すデーター」を直ぐに表示側に渡せない場合には、「Loading....」と、テキストを返すようにしました。これで、どんなに時間がかかっても表示するデーターに困ることがなくなります。
あとは、「ホラよっと、返すデーター」が、なるたけ、ファイルから読み込んだデーターになるように調整すれば良いだけになります。
※指定された行周辺のデーターを、キャッシュしておけば、スムーズに表示できそうですね!!
[登場したクラス]
登場したクラスとメソッドは以下
// 画面にテキストを表示する
Viewer# drawMultiLineText()
// 指定された行のデーターを返す。キャッシュがなければ、「Loading....」と、テキストを返す
FileReader#getLine(int index)
[その3のネタ]
では、どのようにして、テキストデーターをキャッシュすると、良い感じになるでしょうか。
いくつかアプローチ方法が考えられます。次回、別の課題として紹介する予定です。
- 知識面の話では、「文字コードごとの可能な戦略について」説明します。
- 話のネタとしては、「KyoroText以外のアプリが採用している方法」「KyoroTextが採用している方法の欠点」について説明します。
つづく..
2012年12月15日土曜日
KyoroText で使用されている技術 その2
登録:
コメントの投稿 (Atom)
mbedtls dart の 開発を始めた web wasm ffi io flutter
C言語 で開発した機能を、Dart をターゲットとして、Web でも サーバーでも、そして Flutter でも使えるようにしたい。 そこで、mbedtls の 暗号化の部分を Dart 向けのPackageを作りながら、 実現方法を試行錯誤する事にした。 dart...
-
[課題] Low Memory Killer を意図的に発生させたい Androidには、ヒープが涸渇すると使われていないアプリをKillする機能があります。 この記事では、意図的にヒープを枯渇させて、この状態をつくる方法について説明します。 単純にヒープを大...
-
Dart の Native Extensions を利用して、 SDL を用いたマルチプラットフォームのゲーム開発環境を作れるか検証してみた。 結論からいくと、 「Mac 上で動作する SDL x Dart の アプリは動作させることが難しいよ」 と言うことです。 Wind...
-
Emscripten と OpenGLを使ってゲームを作ろうと思いたって、 まずは、SDL2の基本的な使い方を試していた。 しかし、今の所は、SDL 1系 の方が、良いと思いました。 SDL2があるのに、SDL1 を選ぶのはなぜか? # 201...
0 件のコメント:
コメントを投稿