• Showing Page History #27534

Show page source of Yuki/リアルタイム解析エンジン #29079

>[Yuki]>リアルタイム解析エンジン 

== リアルタイム解析エンジン ==

Yukiのオブジェクト構造は、言わば解析系ソフトでの'''「パース済み」'''の状態である。

つまり、あらゆる解析系ソフトのような、'''”まずはソースコードを解析(パース)する”'''と言う作業が必要ない。とても楽。

よってリアルタイム解析系エンジンを作る事も、そんなに難しくないんではないかと思う。[[BR]]
また、Yukiのアイテムクラスに、リアルタイム解析系エンジンが扱いやすいような情報を埋め込む(リアルタイム解析系エンジンからYukiへフィードバックする)事も可能である。[[BR]]
これにより、より高精度な解析や、プログラムの簡素化、高速化を狙えるのではないかと思う。[[BR]]

なお、解析をリアルタイムに行うに当たっての速度であるが、Eclipseは既にリアルタイムに解析を行う機能を実装している。それほど速度面で問題はないかと思う。


[[BR]]
リアルタイム解析エンジンは大きく分けて以下の二つに分類される。

 * [Yuki/最適化#h3-.E3.83.AA.E3.82.A2.E3.83.AB.E3.82.BF.E3.82.A4.E3.83.A0.E6.9C.80.E9.81.A9.E5.8C.96.20.28.E9.AB.98.E5.BA.A6.E6.9C.80.E9.81.A9.E5.8C.96.29 最適化系]
 * [Yuki/リアルタイムバグ指摘エンジン バグ指摘系]

[[BR]]
ロジック的(内部)的には以下のエンジンに分かれる。

 * [Yuki/再帰巡回解析エンジン 再帰巡回解析エンジン]
 * TBD

[[BR]]
=== コンピュータへの負荷調整 ===

まず別スレッドとして動作し、マルチコア・コンピューティングに対応するのは当然として、
コンピュータにとって過負荷とならないよう、負荷調整をする。[[BR]]
どちらかと言えば、これはCPUやシステムへの負担を減らす、とかではなく'''”重いソフトにならないように”'''との配慮である。

リアルタイム解析エンジンでは、非常に多くの負荷がコンピュータに与えられる事になると思われる。[[BR]]
マルチコアなコンピュータならまだ幾分はマシなのであるが、シングルコアなコンピュータであった場合、CPU 100%、フルで使ってしまう事は不満の種となってしまう事であろう。

ユーザの使っているPC上で動いているソフトはNeptuneのみであるとは限らない。・・・むしろ、殆どの場合には、他のソフトが立ち上がっている事だろう。[[BR]]
使用者は、Neptuneを使いつつも、ブラウザでちょっと調べ物をしているかも知れない。そんな時にCPU使用率が100%で、まったくもって非快適なネットサーフィンであったら、[[BR]]
タスクマネージャより優先度を「低」に設定しながら「全く重いソフトだ」と思う事だろう・・・。

よってこれを回避するため、ある程度のスリープを掛ける。
また、CPU使用率を監視し、CPU使用率の高い場合には動作しないか、多目のスリープで動作するようにする。



[[BR]]
=== マルチコア・コンピューティング対応 ===

別スレッドとして動作し、また複数スレッドを立ち上げる。スレッドの最大起動数はコア数-1とする。
これは、メインスレッドの事を考慮し、最大コア使用数でもメインスレッド用に空きを確保するための配慮である。