続き.... 大きなサイズのファイルをヒープに読み込むのは、時間がかかります。この問題に対処した結果、一部だけ読み込めば良いと考えるに至りました。 [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する機能があります。 この記事では、意図的にヒープを枯渇させて、この状態をつくる方法について説明します。 単純にヒープを大...
-
UPnPを用いて、NAT越えできました。しかし、ルータがUPnPをサポートしていなかったり。UPnPだけでは越えられないNATがあります。 本文では、その代案として前回解説できなかった。「適当なサーバーに接続してみて、相手から見えているアドレスを返してもらう方法」について解...
-
Dart の Native Extensions を利用して、 SDL を用いたマルチプラットフォームのゲーム開発環境を作れるか検証してみた。 結論からいくと、 「Mac 上で動作する SDL x Dart の アプリは動作させることが難しいよ」 と言うことです。 Wind...
0 件のコメント:
コメントを投稿