1 名前:仕様書無しさん mailto:sage [2006/03/29(水) 00:37:17 ] さ、語れ。Javaよりも遅い脳みそを持つ人々について C/C++の栄光の時代は終わった。 C/C++を使った仕事が少なくなってきたことによる 愚痴と新技術に対する詭弁で溢れた口八丁C言語信者の行く末は? C言語信者の年齢層は30代〜50代。 バブル世代から新人類世代にまで広がる まさにオッサン世代ですね。だからガーベッジコレクタの 動作原理も知らない化石的思考といわれる。 今C言語はJVMとOS作るだけで十分だ。それ以外のことは いずれ、すべてJavaに委譲すべきだ。 前スレ Javaは遅いという奴は遅れたバブル世代じゃね? pc8.2ch.net/test/read.cgi/prog/1136434011/ Javaよりも重たい(思考回路が遅い)バブル世代以降が立てたスレ Javaって重くね? その2 pc8.2ch.net/test/read.cgi/prog/1136359572/ 関連スレ 先があるのはC++とJavaのどっち? pc8.2ch.net/test/read.cgi/prog/1132157362/
388 名前:仕様書無しさん mailto:sage [2006/05/07(日) 17:43:10 ] Collection使うと頻繁にヒープを確保しにいってると思うよ まぁJAKARTAのcommonsにあるやつは標準よりも速いけど それはやっぱり糞JAVA文化内でのどんぐりの背比べだな
389 名前:仕様書無しさん [2006/05/07(日) 17:52:05 ] グラマクン意気消沈気味?
390 名前:仕様書無しさん [2006/05/08(月) 00:23:33 ] >>386 LinkListとArrayListとの使い分けを間違えて 遅いというコードもあったりするが、 具体的にそのベンチマークのデータを見せてくれないかな。
391 名前:仕様書無しさん mailto:sage [2006/05/08(月) 00:24:57 ] あと、ハッシュを使うとき、 ただHashMapやLinkedHashMapを使った場合とTreeMap, SortedMap を使った場合とでは速度がそれぞれ異なる。 その辺りも理解しているだろうか。 挿入、削除は速いがアクセスは遅い、 またはその逆になっているクラスもあるということだ。
392 名前:仕様書無しさん mailto:sage [2006/05/08(月) 00:49:42 ] >>390 ほれw Collections.sort(list);
393 名前:仕様書無しさん [2006/05/08(月) 01:08:06 ] 安定性 VB>>>Java 速度 VB>>>>>>>>>>>>>Java 作りやすさ VB>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>じゃv
394 名前:仕様書無しさん mailto:sage [2006/05/08(月) 01:09:45 ] >>393 1つ忘れてるぞ 給料(年俸) JAVA >>>>> VB それでいいのかVBさん?
395 名前:仕様書無しさん mailto:sage [2006/05/08(月) 04:03:37 ] >>392 Collections.sortのソースを追いかけてみたが、一旦全体を配列にコピーした後、 Arrays.sortを使った後、リストに戻してるのな。 しかもArrays.sortの中でmergesortを使うためにまた全体をコピーしてるしw こりゃ遅いわ。 Javaコンパイラは速いかも知らんが、その前のJavaのソースが糞だわwww
396 名前:仕様書無しさん [2006/05/08(月) 15:54:56 ] 糞Javaソースをデコンパイル後解析してまで叩くのが最近の主流ですか?
397 名前:仕様書無しさん mailto:sage [2006/05/09(火) 01:24:09 ] Javaのバイトコード解析って何使ってやってる? 俺、バイトコードの仕様見つつ覚えながら脳内解析なんで 時間かかってしゃあない誰かいいツール教えて
398 名前:仕様書無しさん mailto:sage [2006/05/09(火) 03:12:59 ] マージソートのせいで遅いというのもあるんじゃないのか。 これは速さを取るよりも安定なソートをやりたいってことだろ。 しかし、問題はやたらメモリ使ってるところだな。
399 名前:仕様書無しさん mailto:sage [2006/05/09(火) 12:07:07 ] >>392 ベンチマークに使ったソースコードとセットでデータが欲しいんだが。 それにArrayListとLinkListとではソートにかかる時間も異なるぞ。 ソートでなくてもデータ量が多いときと少ないときでもアクセス、データ追加削除更新速度に差が出る。 挿入ソートを用いているTreeMapやTreeSetとも比較してくれ。 ただし挿入する時点でソート済みなので挿入速度と含めて比較してみてくれ。
400 名前:仕様書無しさん mailto:sage [2006/05/10(水) 00:36:40 ] 自分で試してみれば。
401 名前:仕様書無しさん mailto:sage [2006/05/10(水) 01:36:58 ] ここは言い出しっぺの>>392 に試させるのが 筋ってもんだが。
402 名前:仕様書無しさん mailto:sage [2006/05/10(水) 03:10:25 ] クレクレ君乙。
403 名前:仕様書無しさん [2006/05/10(水) 04:09:14 ] List<Integer> list = new ArrayList<Integer>(); Random r = new Random(); final int N = 1000000; for (int i = 0; i < N; ++i) { list.add(r.nextInt()); } long start = System.currentTimeMillis(); Collections.sort(list); long end = System.currentTimeMillis(); System.out.println("Java : " + (end - start) + "ms"); Java : 1532ms C++ : 120ms
404 名前:仕様書無しさん mailto:sage [2006/05/10(水) 08:04:14 ] マジか。 マージソートとかコピーしてるという次元の違いじゃない気がするぞ。
405 名前:仕様書無しさん [2006/05/10(水) 11:39:40 ] >>397 デコンパイルツール ttp://pc8.2ch.net/test/read.cgi/prog/1146146874/285-290
406 名前:仕様書無しさん mailto:sage [2006/05/10(水) 13:17:39 ] Jakarta Commons Collectionsにsort関連のメソッド があったと思うが
407 名前:仕様書無しさん [2006/05/10(水) 13:20:25 ] Javaの場合、sort関数なんて使わずに データを追加する時点でソートするTreeMap, TreeSetタイプを 使うことを推奨しているんじゃないのか? データを作る時点ですでにソート済みにしておけば わざわざsortなんてする必要無いからな
408 名前:仕様書無しさん mailto:sage [2006/05/10(水) 13:24:05 ] データの並びやデータ量によってはクイックソートが必ずしも速いとは 限らないのでArrays.sort()やTreeMapが必ずしも遅いとは言い切れぬ
409 名前:仕様書無しさん mailto:sage [2006/05/10(水) 14:18:07 ] それにしても10倍遅いってのはどうなの。
410 名前:仕様書無しさん mailto:sage [2006/05/10(水) 16:06:56 ] 遅いという結果を示すソースコードと測定方法を見せてくれないことには どうにも検討しようがないのだが。
411 名前:仕様書無しさん [2006/05/10(水) 16:08:22 ] >>409 いろんな意味で設計がまちがってるんだろね まあ、競輪場でMTBとロードの戦いを見ても勝負は見えてると思うぞ
412 名前:仕様書無しさん mailto:sage [2006/05/10(水) 17:55:32 ] >>410 >>403 を見ろ。
413 名前:仕様書無しさん [2006/05/10(水) 18:17:19 ] コードレビューが始まったと聞いて駆けつけました
414 名前:仕様書無しさん mailto:sage [2006/05/10(水) 18:46:05 ] >>412 C++のソースコードが無いぞ
415 名前:仕様書無しさん mailto:sage [2006/05/10(水) 18:50:49 ] vector<int> v; clock_t t; for (int i = 0; i < N; ++i) { v.push_back(rand()); } t = clock(); stable_sort(v.begin(), v.end()); cout << "C++ :" << (double) (clock() - t) * 1000 / CLOCKS_PER_SEC << "ms\n";
416 名前:仕様書無しさん [2006/05/10(水) 18:54:30 ] うむ。C++のソースはカコイイな。糞Javaとは違う!!
417 名前:仕様書無しさん mailto:sage [2006/05/10(水) 18:56:14 ] C++最強
418 名前:仕様書無しさん [2006/05/10(水) 18:56:42 ] ただソートしてるだけでそんなに差が出るものなのかな。 何行にもわたる計算をしてるわけじゃなくて、一行で専用関数に処理を任せる 場合だろ。原理的に、この場合に遅くなるはずはないんだが。 ソートだけ特別遅いんじゃないの?
419 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:00:02 ] >>416 clock_t ← これを見た時点で恰好悪いと思ったなあ このアンダースコア(_) 使わなくてもいいのにダサいぜ。
420 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:00:14 ] >>418 JavaのCollections.sortは、ソートの本体(Arrays.sort)の前後に、配列に入れたり戻したりする処理を行っていて、 そこがJavaで書かれている。
421 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:01:22 ] >>419 push_back()とかもダサいな。
422 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:01:37 ] >>415 Nのサイズがいくつなのか Nのサイズ毎に速度を計算してみてくれ。 Nのサイズ、というかデータのを変えると速度差に 変化が現れるはずだ。 できれば横軸にサイズ、縦軸に速度をとった グラフとしてデータが欲しいところだな。
423 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:03:29 ] いや、Arrays.sort自体も全部Javaで書かれてるな。 やっぱりJavaが遅いんだろ。
424 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:04:01 ] 古いサイトだが、 JavaとC++とで配列やリストの速度比較してるサイトがあったが 配列長、リスト長が長ければ長いほどJavaとC++との速度差は 縮まっていくようになっていたね。 とくに1万件を越えたあたりでJavaとC++とでは速度差が気にならなく なるほどどころか、Javaのほうが速くなっていたような。二つの色違いの 折れ線グラフが1万件のところで交差していたような記憶がある。 しかし良く覚えていない。
425 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:04:44 ] >>422 >>424 Nの値については、>>403 を見ろ。
426 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:05:59 ] >>423 だからデータサイズを出せといいたい。 それから測定に使用したマシンんの メモリ容量、Java起動オプション、Javaのバージョン、 コンパイルされたファイルのバージョン、JVMのバージョン、 マシンのスペックも示せ。 でないとどれだけJavaの速度差が実際の仕事でネックになるのか よくわからん。
427 名前:仕様書無しさん [2006/05/10(水) 19:06:31 ] >>419 アンダースコアをダサいと言う Java厨 カコイイと言うC/C++厨 相容れない世界なのであった それは 【Java厨はブラインドタッチが出来ないから】
428 名前:仕様書無しさん [2006/05/10(水) 19:07:20 ] >>426 そこまで枝番しらべなきゃならないのかw
429 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:09:15 ] >>425 本当にC++のNと同じサイズになっていればの話だが。 ついでだが、各々のコンパイラは何を使ったのか説明が足りないな。
430 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:10:10 ] >>427 C言語厨はいつもこういう根拠のない発言しかできない。 Javaでも定数を宣言するときにアンダースコアを使うんだが。 C言語しかできない馬鹿は死んでいいよ
431 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:10:28 ] >>428 1.3と1.5では速度が劇的に違うからな
432 名前:仕様書無しさん [2006/05/10(水) 19:10:52 ] なぜか必死なJava厨w
433 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:11:39 ] >>423 -serverオプション、ヒープメモリサイズの設定などによっても Javaのパフォーマンスは変わる。 そもそもsort()なんて滅多に使わない。 TreeSetやTreeMapをよく使う俺には一切必要ない。 データを追加する時点でソートされているからな
434 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:11:56 ] 自分が必死だと気づいていないC言語厨w
435 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:12:42 ] Collections,sort()は一度も使ったことがないね
436 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:12:54 ] >>424 Javaの方が速くなってたそのサイトってもうないの〜? シンジラレマセーン
437 名前:仕様書無しさん [2006/05/10(水) 19:13:12 ] getJavatyuUnkonaBakadayon(); なんて長々アンダースコアがつかないでくどくどしいより良い。
438 名前:仕様書無しさん [2006/05/10(水) 19:13:36 ] -serverオプションやヒープメモリサイズを変えた場合の ベンチやマシンのスペックをださないC厨は事実を必死に誤魔化 してんじゃねえの?
439 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:14:08 ] >>436 情報が古いから今だったらもっとJavaは速くなってるからねえ。 どこかの大学の研究室のサイトにあるらしい
440 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:14:57 ] >>437 その長さはネーミングに問題有りだな。 クラス設計からやりなおしたほうがいい。 クラスの親子関係、メソッド引数などを考慮すると ネーミングを短くする術が見つかる
441 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:15:55 ] とりあえずC厨は古いからこっちのスレでも読んで 自分が今置かれている立場を理解汁 【あちら側】ウェブ進化論【Web2.0】 pc8.2ch.net/test/read.cgi/prog/1147237602/
442 名前:仕様書無しさん [2006/05/10(水) 19:17:49 ] Axisは結構長いの使ってるけどねえw ttp://ws.apache.org/axis/java/apiDocs/org/apache/axis/security/simple/SimpleSecurityProvider.html
443 名前:仕様書無しさん [2006/05/10(水) 19:19:05 ] とりあえずJava厨はJavaやめたほうがいいぞw
444 名前:仕様書無しさん [2006/05/10(水) 19:21:05 ] ほれっ長いぞ ttp://ws.apache.org/axis/java/apiDocs/org/apache/axis/transport/http/AbstractQueryStringHandler.html
445 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:21:29 ] Javaは嫌いだけど使わざるおえないんだよぉ〜?
446 名前:仕様書無しさん [2006/05/10(水) 19:24:49 ] >>415 のマシンのスペック情報マダー?
447 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:25:42 ] >>442 冗長性もとくになく短いだろw 文字区切りも少ないしな
448 名前:仕様書無しさん [2006/05/10(水) 19:25:58 ] getJavatyuUnkonaBakadayon configureResponseFromAxisFault 漏れのサンプルのが短かったよ>レスくれJava厨
449 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:26:25 ] >>415 のマシンは500MHz程度と見た そりゃ遅くなる罠
450 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:27:43 ] >>448 前者は意味が通じないし冗長だし 後者のほうが意味がわかる。 getCgenngochu(Attribute.UnkodaBakadayon) のほうがいいな
451 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:28:35 ] そもそもBakadayonというネーミングがC言語厨のセンスの無さを 伺わせる。
452 名前:仕様書無しさん mailto:sage [2006/05/10(水) 19:29:20 ] しかもC言語厨はUnkodaなんてネーミング。 小学生かお前はw
453 名前:仕様書無しさん [2006/05/10(水) 19:30:38 ] 長さで負けたので悔しくてネーミングを叩きだしましたw
454 名前:仕様書無しさん [2006/05/10(水) 19:32:43 ] 喪前の設計センスはいいなw apacheに言ってやれよw クラス設計を見直したほうが良いってさw
455 名前:仕様書無しさん mailto:sage [2006/05/10(水) 20:42:03 ] >>431 お前らさ、>>403 のコードが1.5だということすらわからないの?w -serverオプションとかさあ、つけて自分のマシンで試してみりゃいいじゃねぇか ソースも出てることだし。 まあ、Javaは遅いよ。何が原因かは知らんが。
456 名前:仕様書無しさん mailto:sage [2006/05/10(水) 20:48:30 ] > 長さで負けたので悔しくてネーミングを叩きだしましたw またC言語厨の言い訳だw 名前のセンスのもんだいなんだがw
457 名前:仕様書無しさん mailto:sage [2006/05/10(水) 20:49:29 ] >>455 10倍速くしたというのが信用できないから まずは言い出しっぺのあんたからスペックを提示してみたほうが いいんじゃないか
458 名前:仕様書無しさん mailto:sage [2006/05/10(水) 20:50:32 ] 別に信用しなくてもいいんじゃね?そんなに信用できないなら実行してみれば?w
459 名前:仕様書無しさん mailto:sage [2006/05/10(水) 20:57:45 ] まあでもネタみたいに見える。俺はめんどくさいからやらないけど。誰かが追試してくれればいい。
460 名前:仕様書無しさん [2006/05/10(水) 21:05:14 ] クレクレ君に真面目に付き合うとこうなるという例。
461 名前:仕様書無しさん [2006/05/10(水) 21:15:37 ] 面白いことを発見した。 コードを以下のように書き換えたら List<Integer> list = new ArrayList<Integer>(); Set<Integer> set = new TreeSet<Integer>(list); Random r = new Random(); final int N = 1000000; for (int i = 0; i < N; ++i) { set.add(r.nextInt()); } long start = System.currentTimeMillis(); Collections.sort(list); long end = System.currentTimeMillis(); System.out.println("Java : " + (end - start) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$ こういう結果になった。 Java : 0ms
462 名前:仕様書無しさん [2006/05/10(水) 21:18:06 ] Javaのほうが速くなってるのはどうして?
463 名前:仕様書無しさん [2006/05/10(水) 21:21:02 ] それに何の意味があるの?
464 名前:仕様書無しさん [2006/05/10(水) 21:21:52 ] >>462 Set.addのときにソートしてるから。 くだらないから無視しときなさい。
465 名前:仕様書無しさん [2006/05/10(水) 21:31:31 ] set.addもうちの環境だとC++と比べて2倍ぐらい遅いなあ。 やっぱりJavaは遅いのかな。遜色ないと聞いていたのに。
466 名前:仕様書無しさん mailto:sage [2006/05/10(水) 21:42:26 ] おそらく、C++のSTLとJavaのコレクションを比べるから2〜10倍遅くなってしまうだけで、 よく言われる遜色ないというのは、細かいルーチンを自分で手で書いて 比べれば遜色ないという意味だろう。 おそらくSTLのチューンが進んでいるのではないだろうか。
467 名前:仕様書無しさん mailto:sage [2006/05/10(水) 22:21:38 ] >>464 つまり、Set.addでソートしておけば速いってことじゃないのかな?
468 名前:仕様書無しさん mailto:sage [2006/05/10(水) 22:21:52 ] >>465 ソースコード公開きぼん
469 名前:仕様書無しさん mailto:sage [2006/05/10(水) 22:22:46 ] >>466 2〜10倍になるちゃんとしたデータが欲しい。 sortは差はかなりでているけど ほかのコレクション系についてはどうだろうか。
470 名前:仕様書無しさん mailto:sage [2006/05/10(水) 22:43:31 ] >>467 それはJavaとC++を比べてどうこういうのとは問題が違うだろう。
471 名前:仕様書無しさん [2006/05/10(水) 23:04:45 ] コードレビューや技術的な話になるとすっかりなりを潜めるグラマクン
472 名前:仕様書無しさん [2006/05/10(水) 23:08:28 ] フンフン JAVA厨藁
473 名前:仕様書無しさん [2006/05/10(水) 23:14:11 ] つかVBは蚊帳の外
474 名前:仕様書無しさん [2006/05/10(水) 23:14:56 ] コードレビューはeclipseがやってくれるから大丈夫、 変数が変でもあとでリファクタリングすれば大丈夫 て思ってるんじゃね?
475 名前:仕様書無しさん mailto:sage [2006/05/11(木) 00:28:15 ] そんなVB厨やC言語厨みたいな甘い思考じゃあるまいし
476 名前:仕様書無しさん mailto:sage [2006/05/11(木) 00:29:04 ] データ無いのか。 TreeSet使った場合のC++版のソースコードは見せないのか。 つまりJavaでやってもC++でやっても大差ないってことかな
477 名前:仕様書無しさん mailto:sage [2006/05/11(木) 02:46:37 ] その程度のこと自分で書けよw 何も出来ない奴は情報を得る資格もないし、これから苦労するぞ。
478 名前:仕様書無しさん [2006/05/11(木) 08:11:29 ] 書けないからクレクレしてパクリたいのがJava厨ですから
479 名前:仕様書無しさん mailto:sage [2006/05/11(木) 13:32:58 ] どうせC厨も何もかけないだろ オブジェクト指向も何もわかってないんだからな
480 名前:仕様書無しさん [2006/05/11(木) 16:16:09 ] で、単純にソートしたのが早いのは分かったけどその後はどうするの? 項目のinsertしたあと毎回ソートするの?
481 名前:仕様書無しさん mailto:sage [2006/05/11(木) 16:18:25 ] クタたんは解体されます。
482 名前:仕様書無しさん mailto:sage [2006/05/11(木) 21:30:10 ] んだな。insertするたびにsortするのはアホらしいな。 だからJava標準関数には凝ったsortのアルゴリズムが 用意されていないんだろうな。 だから挿入ソートで挿入した時点で即座に 順序が決まるSortedSet, SortedMapのサブクラスのコレクションクラス であるTreeSetやTreeMapなどのほうが 使い勝手がいいな
483 名前:仕様書無しさん mailto:sage [2006/05/11(木) 21:33:25 ] だから何?そんなこと言ってみたってJavaが遅いことには変わりないんだけど。
484 名前:仕様書無しさん mailto:sage [2006/05/11(木) 21:38:47 ] sortの使い道がわかってないな。 insertするたびにsortする馬鹿なんか、もともとどこにもいねぇよw それでもsortって関数は存在し、使われてるわけだ。 人間一人にsortの使い道を全て想像できるわけないだろ。
485 名前:仕様書無しさん mailto:sage [2006/05/11(木) 22:36:29 ] >>483 それこそだから何? 遅いからどうしたって話なんだけど。 仕事もたくさんあるしC++にリプレースする必要が あるほど遅くは無いんだけど。
486 名前:仕様書無しさん mailto:sage [2006/05/11(木) 22:37:10 ] >>484 > sortの使い道がわかってないな。 > insertするたびにsortする馬鹿なんか、もともとどこにもいねぇよw sortに拘るC言語厨がいるから突っ込んでやったんだろ
487 名前:仕様書無しさん mailto:sage [2006/05/11(木) 22:39:14 ] >>486 だから、それがめちゃくちゃ的外れな突込みだがな。
488 名前:仕様書無しさん mailto:sage [2006/05/11(木) 22:40:30 ] >>485 スレタイ見てみろ。遅さを議論するスレです。 sortの使い方を議論するスレでも仕事にどちらが使えるかを 議論するスレでもない。