« max msp jitterでjavaを使う。 No.3 | トップページ | I.S »

2010.04.07

max msp jitterでjavaを使う。 No.4
javaの高速化

昨日、目的の値。即ち複数の物体に引力を持たせた力関係を演算するプログラムのたたきが出来たので、少しづつブラッシュアップさせていこうと思います。

まず始めに3Dでの表現を想定しているので、コードの処理負荷を軽くするように修正することにしました。
コードプログラミング自体がほぼ未経験といえるので、処理を軽くするような知識は持ち合わせていません。ですので調べてみました。


  ・オブジェクト生成、newは削減。

  ・オブジェクトの初期化は必要な時に行う。

  ・不要になった生成済みオブジェクトは明示的にnullを代入して解放する。

  ・メソッドのインライン化

  ・ループの終了条件はローカル変数にコピーする。





ざらっと調べて、僕の知識で出来そうなものは上に上げたものです。
早速、コードの修正に取りかかると、

float x_ans;
x_ans = null;

この、“ x_ans = null; ”の部分でエラーがでてしまいました。
自分では、明示的にnullを代入してメモリを解放したつもりだったので、なぜエラーが出るのか見当も付きませんでした。それから、数十分間“ float nul l”、“ float 解放 ”などで検索してみるものの満足のいく答えが出ず。しかし、全く関係ない検索で開いた以下のサイトで答えを見つけることが出来ました。


javaの知られざる欠陥(上) ITpro


簡単に説明するとfloatやintなどはプリミティブ型と呼ばれるオブジェクトではないデータ型だったので、スタック領域に書き込まれる。スタック領域は、変数の有効範囲を抜けると、データをすぐに解放する。変わってオブジェクト型だと、実体がヒープ領域に書き込まれ、そのオブジェクトの位置を変数のデータとしてスタック領域に書き込んでいる。
要するにnullはスタック領域の変数データで、その参照値はヒープ領域の何もないところを指しているという風に考えられる。そもそも型が違うからfloat型の変数x_ansにnullを代入しようたってできない。

なるほどな〜


《 javaの高速化について参考にしたサイトをリンクしておきます 》




javaの知られざる欠陥(上) ITpro

javaの高速化の方法

るきへなWeblog  java高速化


SONY デジタルHDビデオカメラレコーダーSONY デジタルHDビデオカメラレコーダー
AX2000 HDR-AX2000/H

価格 : ¥332,115(税込み)通常配送無料
高画質・高音質・操作性。すべてにこだわった、
“ハンディカム”の頂点

|

« max msp jitterでjavaを使う。 No.3 | トップページ | I.S »

max msp jitter」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/198455/48026077

この記事へのトラックバック一覧です: max msp jitterでjavaを使う。 No.4
javaの高速化
:

« max msp jitterでjavaを使う。 No.3 | トップページ | I.S »