Javaはもう死んだの?
■ このスレッドは過去ログ倉庫に格納されています
Ruby では、
JRuby(Java 実装系)のJIT は、百万回からコンパイルされる。
一千万回(実行時間で、1秒)では、なんと、MRI(C 実装系)よりも速くなる!
このように最適化では、Java は数十年も研究してるから、C よりも速くなる! >>767
wikipに書いてることはデタラメなのか。さすがJava信者。オカルトですw
しかもCより速いとか言ってる時点でIT音痴を露呈しているw >>768
jrubyってjava byte codeにJITコンパイルしてたりするんじゃね
c版もJITしないと不公平だろ >>769
お前、この前からデタラメ書いてる荒らしだろ
もう相手すんのやめるわ
勝手に勝利宣言してくれ JITコンパイラはJavaの思想に反している。
ネイティブ変換は既にVM上で走ってないし、Write once, run anywhere じゃなくなる。
つまり偽Java。 >>769
wikipediaになんて書いてあんの?
J2SE 1.3 (2000年5月8日)
HotSpot Java仮想マシンが導入 Sunが訴訟しまくったことにより、2000年には世界的に既にJavaブームは終わっており、
IT音痴の日本だけはなぜかこれからはJavaだ、Javaだと言ってる状況だった。
2000年頃にはPen4、2GHzにもなりCPUの速度は10倍以上速くなっている。
これでもまだJavaを走らすには遅すぎた。後のCoreアーキまで待たねばならなかった。 ハードの進化がJVMの欠点を隠した、と言う事
2005ぐらいまではJavaアプレットでお絵かきして遊んでたぐらいだった
ここ数年でJavaへ移行する大型プロジェクトが多かったが、一段落ついたらライセンス化された
無料で新規にプロジェクト組むのは色々有って増える事は無い
減るだけだろう みずほ銀行が合併3行の内紛でCOBOLからJavaへ移行がぐちゃぐちゃになって何とかシステム移行出来たのが、つい最近
と、同時にリストラ発表で人員削減
Javaになったシステムは稼働ライセンス契約が開始
そのみずほ銀行から天下りした社長の7Payはプログラムソース漏洩で個人情報漏洩発覚
安易に時流に乗って必要な分析怠ると色々事件発生するこの業界
おまけにみずほは韓国へ資金援助しており回収不能、今後も投資するとか言ってる
サグラダファミリアみたいなシステム作って無駄になる可能性出て来た >>765
C/C++コードが Java や C# より速いのは、配列のレンジチェックだけでなく、
GC を使ってないことがかなり大きい。 >>778
もう一つは、ヒープを使わなくて済む場合には、(native)スタックや
構造体に直にオブジェクトや配列などを埋め込むから。
Javaなどは、一般オブジェクトや配列は new Txxx などのように
必ずヒープから確保するのでここにかなりのオーバーヘッドが発生する。
また、N 個のデータがある場合、C++で1回 delete すると、O(1)で済むが、
Java/C# で、参照型変数 = null; などとした場合には、最悪、O(N)位かかってしまう
事があるらしい。それは、GC が N 個のデータを全て walk してしまうことが
あるから。
だから、データの量が増えた場合でも C++ は速度低下が余り起きずに安定して速いのに
対し、Java/C# ではどんどん遅くなる場合がある。それは GC があるから。
>>757
上記の事があるので、Java/C# は、native binary に直しても速くならない。
なぜなら、O(1)とO(N)の違いは「速度のオーダーの違い」で、いくらバックエンドの
コードやCPU自体を高速化しても埋まらないから。 >>779
O(x)という記号の意味を大体書いておくと、
O(1) = データ量Nが大きくなっても処理時間に変化が起きない。
O(N) = データ量Nが大きくなると、処理時間がNに比例して大きくなっていく。
もう少し厳密に書くと、delete pXxx や rXxx = null にかかる処理時間を f(N) と表した時、
O(1) : lim_{N->∞) ( f(N) ) < 一定値
O(N) : lim_{N->∞) ( f(N) / N ) < 一定値
ということです。これらは数学の解析学や微分積分学のランダウの記号といいます。 モダンC++対マネージコード:パフォーマンス対生産性
https://www.infoq.com/jp/news/2012/04/native_vs_jit/
まず、JITコンパイルは主要な問題ではありません。根本原因はずっと基本的なことです。マネージ言語は基本的にパフォーマンス効率がぎりぎりの時でさえも、それを犠牲にして、プログラマーの生産性を最適化するよう、意図的に設計上のトレードオフを行なっています。
マネージ言語の設計者は、設計のためにパフォーマンスよりも安全性の道を選びました。例えば、配列の境界外の要素にアクセスするのは、無効な操作であり、プログラムの実行を終了させます。クラッシュしたり、攻撃可能なセキュリティホールを作ることがないようにしています。
2つ目に、たとえJITが唯一の大きな問題であったとしても、JITは普通に最適化するコンパイラー程良くなることはありません。なぜならJITコンパイラーには、速いことが重要であり、最適化したコードの生成を気にしていないからです。
「予防」と「治療」にはいつも避けがたい、基本的な差があります。パフォーマンスの最適化となると、C++はいつも「予防」を選び、これまで述べた英雄的な努力とそれ以上によって、マネージ言語は「治療」を選びます。
しかし、古くから諺である予防はいかなる治療にも勝るは、絶対です。予防には勝てません(その理由の1つは、最初に予防した後に治療ができるからです。しかし逆はできません)。
もしパフォーマンスとコントロールを一番大事にするなら、それを一番優先するように設計されている言語を使うべきです。それだけです。 >>780
自己レス。厳密に言うと、記号に微妙な誤りがあって、N個のデータがあった時、
・C++ の delete pXxx の一回当たりの平均速度を f(N)
・Java/C# の rXxx = null; の一回当たりの平均速度を g(N)
とすると、O(1)、O(N)はなく、
f(N)〜1 // 常に
g(N)〜N // 最悪ケース
と書いたほうが良かった。
g(N)=O(N) と g(N)〜N は、意味が違っていて、前者は、N が十分大きい場合に、
実行時間が最悪でも N に比例。後者は、実行時間が N が十分大きい場合に N に比例。
言い方を帰れば、=O(N)という記号は、(Nが大きい場合の)上限値、
〜Nという記号は、Nが大きい場合の漸近値を表す。 >>782
誤:とすると、O(1)、O(N)はなく、
正:とすると、O(1)、O(N)ではなく、 >>780
したがって、こう書けます:
g(N)〜1 = データ量Nが大きくなっても処理時間に変化が起きない。
g(N)〜N = データ量Nが大きくなると、処理時間がNに比例して大きくなっていく。 swing使ってる人って少ないんでしょうかね。
ラベルとかボタンの日本語フォントが汚すぎて泣きたい。 Swingなんてまだ使ってる所有るんだなw
あのUIは個人的には凄い嫌だわw >>782
配列をソートするとき。中身がオブジェクトの場合、実際にメモリ交換が起きるのは、参照アドレスだけになるんですか?
C++の場合は、意識して、クラスの参照アドレスを配列にいれないと中身が移動するので遅くなるはず。
また、リスト、マップ、ベクター(C++では、STL)では、どうなんでしょうか? >>788
そういう場合普通indexだけソートしない? >>772
その現在では否定されているフレーズを使うのはJava信者の特徴 >>788
Javaの場合は、原則的には実態ではなく参照だけの入れ替え(交換)になる。
実体の入れ替えは、同じメンバ同士の値を交換することによって
行えなくは無い。しかし、その場合でも Object 系のメンバについては
参照だけの交換が基本。ただし、実は Shallow Copy と Deep Copy の
違いなるものがあって、深く交換することも可能は可能。
今言ったメンバ同士の交換を、Object系のメンバについても「再帰的に」
繰り返せば、Deep Copy(今の場合は交換だけど)といって深い複製や
交換も可能は可能。 >>791
C++の場合は、もともとの言語設計では参照カウンタ方式が使われないので、
自前で参照カウンタを設けたりスマートポインター系を使わない限りは、
「Copy」しないとプログミングしにくい場合がある。
その部分に関して(だけ)は、Javaの方がC++より効率が良い感じがある。
つまり、参照を何度でも複数の参照変数に入れても言語処理系が
参照カウンタが0になった時に勝手に解放してくれる手軽さがあるから。
C++だと参照カウンタを明示的に使わない限りは自動解放してくれないので
コピーして使うほうが楽になる傾向があったりする。必ずしもそうでも無いけど。 >>792
C++で、new は簡単だけど、deleteするタイミングは難しいですね。
結果、小さなクラスや、小さな配列は、何も考えずに、配列や、stl::list 等 にぶち込むのでコピーになっていますね。たぶん。 >>793
その部分に関して(だけ)はどうしてもC++の方が効率が下がりがちでは有る。
自動delete機能のあるか無いかの違いがプログラムの仕方そのものにも影響を与え
て、C++は本来必要の無いコピーをしがちになりがち。 >>795
但し、実際にやってみるとC++はコピーも速く出来がちなので、本来効率の悪い
はずのコピーであってもJavaのGC方式を使ってコピーを減らしたものようりも
結果的にはだいぶ速い事が多い。実際今こっちでやってるプログラムは、
C++で書いていてDeepCopyを結構使ってるけど、JavaでShallowCopy使った
ものよりもはるかに速く動作している。 >>794
なお、C++のstd::list はリンクリストなので、要素の実体のコピーは滅多に
伴わないため効率は高い。
1つのオブジェクトが色々な場所から不規則に参照されている場合、
静的に delete すべきタイミングを予想する事は難しいことが多い。 そんな必死にC++の優位性を説かなくても普通の人は分かってるから大丈夫ですよ Windows でさくさく動く入力画面を、Javaで作ろうと思ったら、何を使えばいいんですか? Swingはとても美しい構造をしているので時代遅れにはなりにくい。
GUIライブラリとしては歴史に残るような美しさ、センス、品質の良さを
持っていると思う。 部品くっつけて載せるだけで何回も登録しなきゃいけなくてめんどい
いまだにテキストエリアの文字数制限自作とかちょっとない
Serialize定数が見苦しい
すぐフォーマット崩れる Windowsと言われているのにSwingだと、見た目でこれは何か言われるぞ。 もうswing出てから20年以上経ってんだよな
20年前のGUIを今使えって言われてもなあ
そして誰も言わないJavaFX そんなのもありましたね
いつまでたってもEclipseがまともなポトペタエディタ提供してくれないから 20年以上,vc++ で mfc 使ってますけどね〜笑
意外と廃れないなーと思っています。うまく作れば、xpからwin10まで動くし。。。 >>809
何を当たり前のこと。Windows SDKでの開発はWindows APIもメッセージも変わりすぎて対応が難しい。
.NET Frameworkも手を入れすぎていて複雑化している。 Javaは遅くないなんて言ってる低スキル者がいて笑えるw
使って気づかないって相当なアホだろw >>808
NetBeansが最初から今の出来だったら少しは違ったかもな 金融系で案件で目にする、レガシーなCOBOLからJavaへの置き換えって、
オブジェクト指向の設計をしなおしてるのですか?
ひょっとして、クラスひとつだけで、作っちゃってるとか? swingに変わる奴無いの?
JavaFXは論外なので却下 VM捨ててネィティブ変換したり、ライブラリの多くをC/C++に置き換えてなんとか使える速度になったのに
なぜJavaが糞遅くないって思っているのか不思議。低スキルすぎてスタックとヒープの速度差とか全然理解してなさそう。 >>821
技術的な反論が一つも言えないおまえの頭は悪いと理解した。
しかも相当に。むしろ哀れである。笑える。 話の前提も論理展開も主観的評価もめちゃくちゃすぎて技術的な話が成立する気がしない
頭悪そうとしか言いようがない >>823
なんで技術ネタに逃げるようなような低脳馬鹿がこの板にいるのだろうか。
低スキルだと自覚があるならそういう恥ずかしい煽りなどせず黙ってろよ、低脳君。
なぜ多くのライブラリをC/C++で書き直した?
Javaで書いたら糞遅かったからだろ。他に理由があるのか。低スキルJava信者よ。
答えよ。おまえ指定だ。他のIDの奴は答えなくていい。 リアルで、話の前提も論理展開も主観的評価も全くできない低脳すぎて話が成立しなくてワロタwww
いや、馬鹿とか低スキルとかいうレベルではないな。
ID:CTtSmkOq ← これぞリアル池沼ww 多くのライブラリと言っておきながら、まさか一つも例を上げられずに逃走するとは
このときは想像することも出来なかったのです… プログラミング言語のどれが速いかなんて、条件の設定次第でどっちにでも傾く。 IDを指定して質問した本人はとっくに逃げ出したのに、また嘘八百の捏造を並べ始めたかJava信者。昔からほんと嘘つきだなw
wikipediaに書いてある。諦めろ。
> Javaプログラムの実行速度が遅かった
そんなに高速化したのならブラウザの一つでもオールJavaで書いてみろ。2chブウラザでもいい。 またデタラメ君か
このバカ全然話通じないから相手するだけ無駄だぞ 「C++ 遅い」で検索
About 282,000 results (0.28 seconds)
「Java 遅い」で検索
About 6,280,000 results (0.24 seconds)
Java厨哀れだなw >>835
javaが遅いと感じる10の 以下略
> 基本的にJavaは『遅い』と思われている。理由は二点あって、
> 一つは過去のバージョンのJavaの実行速度が遅かった歴史的な点であり、
> 一つは実際に依然として遅い面がある点だ。 >>837
> COBOLのコードを手動でJavaにおき直す仕事もした事あるけど
> 「COBOLより糞遅いな。Javaやっぱり駄目だね」とお客さんの一言で終わった
ほんとJavaって終わってんだな。こんなの真面目に大学で勉強して未だに高速だと信じてて笑えるw そんなに遅いのにGoogleもAmazonも使ってるのはなんでなのん JavaのライブラリをC++に書き直した話をしてて
なんでか俺に聞いてたはずだが
単に彼の思い込みで間違いだったのだろうか
あんなに強い口調で主張の根拠にしてたのに >>840
低スキル低学歴の馬鹿でも使えるからさ。wikipedieaに書いてるだろう。
> 1990年頃、サンのエンジニア、パトリック・ノートンは、自社のプログラミング言語C++とCの
> アプリケーションプログラミングインタフェース(API)と開発ツールに不満を募らせていた。
> 彼らはC++ではコンピュータ資源を食いすぎると判断した。
> またC++は複雑なプログラミング言語であり、C++を使うプログラマは注意していても間違いを犯しがちである。
彼らの脳みそではC++は難しすぎたのさ。だが今でも多くの速度のいるアプリやライブラリ、
DB、OS、ドライバなどはC/C++で書かれている。つまり馬鹿だったはのおまえと彼らだけだったという話だ。
しかもJavaは糞遅いなどと使えばすぐわかることすら理解できないのだから。 >>842
「C++ 遅い」で検索
About 282,000 results (0.28 seconds)
「Java 遅い」で検索
About 6,280,000 results (0.24 seconds)
妄想から覚めろ、Java信者w >>842
いいかげんに答えてくれないか。JavaはC/C++より速いのだろう。
なら、C/C++で書かれたブラウザや高速ライブラリがJavaで書き直された例がたくさんあるはずだ。 >>841
低スキルのおまえは録にコード書けないだろうからわざわざ見つけてきたぞ。Java製ブラウザ。
HotJava
https://ja.wikipedia.org/wiki/HotJava
> HotJavaはほとんど普及していない。
> ▽HotJava 1.1.5. 総Javaで作られたブラウザ。総Javaだけあって、かなり動きは遅いです。 時々原因不明に固まったりするので
> ▽HotJava 3.0. 総Javaなブラウザ。やはり重い。
頑張って使えや、コードも書けず煽りと捏造しか書けない低スキルJava信者。 いや
お前がJavaがくそ遅いからライブラリをC++に書き直したのがいっぱいあるからって俺に理由聞いて
俺がどれのことかって聞いてそのままなんだ
答えてくれないかって言われても >>847
まあなんだ、気持ちは分かるよ。訴訟しまくった結果、MSから捨てられ、Googleから捨てられ、
ユーザーから捨てられ、信者からも捨てられ、完全にオワコンになったJava。
キミはどこの大学でJavaを学んだんだい? Javaを教えてくれた教授に言ってやれ。おれの青春を返せってw 上っ面勝ち誇った顔したいだけで実際の中身に一切興味ないやつうちの職場にもいた
世の中こんな連中だらけだ >>849
Javaの職場って元コボラーだらけだから当然です。
C++屋がJava案件に投入されるときはパフォーマンス改善の尻拭いです。
でなにをするか、JNIでモジュールを外に出してC++で置き換えです。
そしてコボラーは言う。Javaってほんと糞遅いよなって。
しかしJava屋はいつも言う。インテルが遅いせいだ。
ほんとおまえらのような低スキル信者ってほんと恥を知らない。 GAFAで全く相手にされてない.NETerの僻みでは googleから捨てられたからまたサーバサイドだけになったな、Java(笑)
C/C++より速いのになんでテキスト吐くだけの簡単なお仕事しかさせてもらえないのか、不運で哀れな、Java(笑) AzureでJavaカスタムランタイムの提供
SQLServerでJavaサポート開始
AdoptOpenJDKのプラチナスポンサーでコードも提供
MSのJavaサポートは増していくばかり >>834
V2Cは快適に使ってたけど更新されなくなって使えなくなった
非公式版があるらしいけど今はもう知らん
あれはかなり良くできてたよ >>854
Java屋(笑)はなんで自分の高スキルを活かして、JavaでブラウザやRDBMSを書かないんだろうな。
C/C++よりJavaは高速なのに。どこでも動いてC/C++より高速なんて夢のような言語だぜ。 >>816
オブジェクト指向でのCOBOL移行ほとんどしてない
実装結果はCOBOLとほとんど変わらないスパゲッティプログラムになってる
(変換ツールで一斉変換)
オブジェクト指向でJavaに移行しても読める技術者と読めない技術者出て来るからね COBOLの案件は総じて逐次処理ばかりである。スパゲッテイに見えても何の複雑性もなくシンプルだ。
だがオブジェクト思考はどうだろう。これがオブジェクト思考だと言わんばかりに隠蔽と継承を重ね、速度がどんどん遅くなる。
一つのデータを参照するのに一体いくつのvtableを跨ぐのだ。しかも実態コードが一体どこにあるかすら探すのも面倒だ。
無駄なコード、無駄な処理を大量に生み、納期を蝕み、そしてみな逃げ出す。 Javaの最大の利点はprivateとinterfaceの両面からの責任の分離にある
C++だとprivateにしても結局うまく分離できない
本質ではないとか文句言ってるやつもいたが知らん
プログラムで利用できる汎用的問題を分離して扱いやすくるのがJavaの使命だった
そしてそれはJavaによってほぼ達成され限界がみえてきた
それで今やっぱり関数型に戻ろうという動きがでてきてる
Javaが成し遂げたことが消え去るはずがない
関数型が主流になってもやっぱりprivateもオブジェクトも、インターフェースも存在し続けるだろう Javaもろくにできないから会社クビになった人の八つ当たりでした
まだまだ続くよ! >>859
分かるよ。無職でプロジェクトの経験もないし、技術ネタにも会話に入れない。
そんなキミにできるのは煽ることだけ。それでも立派だよ!!! 少々の給料では自分が世界に残せるものが少なくなるのとつりあいがとれない
Cobolからの人の逃げっぷりはしゃれにならない
Cobolは煩雑な上に必要な制約を欠き環境もレガシー
結局生産性わるいのをみな知ってる
しかも人少ないから捕まったら一生逃げれない
みんな必死で逃げる >>858
なに言ってるか分からんが高スキルのようだ。ぜひブラウザを書いてみてくれ。キミの自慢のJavaで。 じゃあその高速のJavaでブラウザ書いてくれというと絶対に書かないよな。
まあいいよ。このスレの糞ガキなんて無職で低スキルだからな。
だがよ、世界中のJava屋が書かないんだ。
確かにHotJavaというのは過去にあったが遅くてバグだらけで全く普及せず(笑) もちろん複数人でもいいですよ。コンパイラコンパイラもC/C++製は使わないでねw https://github.com/oswetto/LoboEvolution/wiki
ちょっとぐぐっただけでいきなり引っかかったぞ
本当に世界中調べたのか?
お前が英語読めなくて企業が見せてくれる世界しか見てないんじゃないか? >>866
でかしたぞ。使ってみろ。どけだけIEやChromeより高速か試してくれ。 俺の会社のやつも人にケチつけるだけで自分で何にもしようとしなかった
さすがに腹立つからお前がやれ ■ このスレッドは過去ログ倉庫に格納されています