ぼうメモ帳

2004-06-02 鬱症状進行中

鬱症状のおかげで心身ともに危険な状態へとまっしぐら。このまま眠れない日々が続くようだと、病院へ通うことになるのか!? とにかく就職活動が落ち着くのを待つだけか。

javax.imageio.ImageIO.read()

| javax.imageio.ImageIO.read()を含むブックマーク

なんか、ImageIO.readを仕掛けると、時々スレッドが止まるんですが… マルチスレッドで動かしているのがいけないのか、それとも。。。ばぐ?

グラフシミュレータ

| グラフシミュレータを含むブックマーク

階層型グラフも扱えるようになったということで、さっそく適当な例題で実験してみました。題材は、去年の創造工房セミナの「もやもや消しゴム」です。

実際のLSI上で動作する回路の総モジュール数は3ステージ82モジュールですが、Javaによりモデリングされた回路は4ステージ44モジュールです。Javaモデルのほうが若干抽象度を高いですが、機能の粒度はほとんど変わりません。

モデリングに掛かった時間は、4時間です。画像入出力モジュールの設計や、シミュレータのテスト・デバッグなども含まれています。ですので、実際にモデリングに掛かった時間は半分ほどで、十分満足できる生産性だと思います。

さてその性能ですが… おせ〜 もう、遅いとかいうレベルじゃない。LSI上で動作する回路は、73万ピクセル毎秒ぐらいの性能で、リアルタイム画像をぎりぎりで扱えます。それに対し、シミュレータを使うと、5500ピクセル毎秒ということで、100分の1ぐらいの性能しか出ていません。ぎゃ〜 超細粒度並列処理(処理のほとんどがモジュール間の通信に費やされており、1つのモジュールには1つのスレッドが割り当てられている)の上に、シミュレーションを開始した瞬間、50ものスレッドが立ち上がるので、仕方がないといえば仕方がないのですけど。。。

さらに、ImageIO.readで止まる。そのたびにシミュレーションを強制中止して、再開するという情けない仕様。ふざけるな〜!!

もやもや消しゴムの解析

| もやもや消しゴムの解析を含むブックマーク

ほとんどのモジュールが、その処理時間の6割〜9割をモジュール間のread/writeに費やされている。その内訳は、HashMapの検索が6〜7割、LinkedListへの読み書きが2〜1割、雑用が2割と言った感じ。便利便利とHashMapを多用したのが間違いみたいだ。すこし、見直したい。

グラフの階層が深くなればなるほど、HashMapによるマッピングの階層も深くなる。そのため、HashMapの検索時間が相対的に増え、性能が低下している。そして、Channelの実装としてLinkedListを利用しており、大量のデータの読み書きのための性能低下を心配していたけど、HashMapの威力が大きすぎるために、思ったよりも影響はすくなさそう。

結論としては、今すぐHashMapの利用を見直せということか。

トラックバック - http://d.hatena.ne.jp/susumu/20040602
263413
Connection: close