人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Javaって今でも遅いの?

顔認証や人物検知を動画(カメラ映像)で処理するプログラムを考えています。
その際、OpenCVを用いて作ってみようかなと考えているのですが、画像処理に
Javaというとどうしても遅いという意見を聞きます。

以前はそうだなと思っていたのですが、現在でもJavaはこういった
動画のリアルタイム解析などには向かないのでしょうか?それともC++などと
比べると遅いという意味合いなのでしょうか?

作り比べてみるのが一番かもしれませんが、皆様の所感というか
経験則などありましたら参考にさせて頂けると嬉しいです。

●質問者: 匿名質問者
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 匿名回答1号
ベストアンサー

世情の流れで、業務アプリはwebを使ったjava で作る事が多いのです。
java は早くなったというのですが…
どうしても速度が欲しい部分のCGIをCで組み直してみると、体感的には数秒かかっていた処理が瞬間的に終わるようになります。
ああ、やっぱりな。と思う事しきりですね。


匿名質問者さんのコメント
やろうとしていることに対し、速度が足りなければJavaでは難しいけど、 足りるようであればJavaでもという感じでしょうか。 そういう体感がまだ全然足りないので処理速度の影響を受けるような プログラムをしてみて体感してみます。 #稚拙なコメントですみません。

匿名回答3号さんのコメント
JavaはVMの立ち上がりやJITが適用されるまでの時間があるのでCGIっていうのは比較には一番不利な条件じゃないでしょうか。同様に、頻繁に起動しないとならない処理には向かないと言えると思います。

匿名質問者さんのコメント
補足というか突っ込みコメントありがとうございました。ざっくりになってしまいますが、CGIはバックで立ち上がって準備ができているのに対し、Javaの方は、イベントが起きてからVMが立ち上がるので条件が違うと言った意味合いでしょうか?確かに…。ありがとうございます。

2 ● 匿名回答2号

Javaがリアルタイム処理に向かないもう一つの理由として、単純なパフォーマンス以上にフルGCの存在があります。

単純なパフォーマンスはハードウェアの進化に比例して改善するので、C++などで書いたネイティブコードより遅かったとしてもいずれ問題ではなくなります。
しかしフルGCは、ハードウェアが進化してもあまり改善しません。
CPUも速くなりますがメモリ搭載量も増えていくので、メモリ搭載量に比例するフルGC時間は短くならない、と。

リアルタイムなんだけどときどきプチフリーズするかもしれない、というのを許せるかどうかという問題になってきます。


匿名質問者さんのコメント
メモリが増えた分だけフルGCの時間もかかるということですね? フルGCが起きる可能性も踏まえて、どちらがよいか…でしょうか。 CやC++はメモリ管理が難しいというお話をよく聞くので避けてしまっていた面がありますが、Javaでもこうした面があるのですね・・・。

質問者から

匿名回答5号さんの回答は自分の理解力が足らず、何の1.4なのか理解できずすみません。
ほかの方々もコメントありがとうございました。
連休もありますし、まずは自分で動くものをJavaで作ってみて速さ遅さを実感してみます。


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ