トップページ⇒tech
1001コメント289KB

JavaでC++並みの実行速度を出すPGを組むスレ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/02/18(日) 05:00:45
JavaでC++に近い、より速い実行速度を出すプログラムを組むには、
どういう技術を駆使したり、どういうことをすればいいか考えるスレです。
0153デフォルトの名無しさん2007/05/11(金) 23:32:09
>>151
それのC++版があるんじゃないかと・・・・
0154デフォルトの名無しさん2007/05/11(金) 23:35:36
>>152
第3版なら持ってる。けど、仕様書じゃないね。

あと、それで仕様を確認する奴は殺しといた方が良いぞ。
0155デフォルトの名無しさん2007/05/11(金) 23:36:40
>>154
じゃあC++の仕様といえば何をみるのさ
0156デフォルトの名無しさん2007/05/11(金) 23:42:24
ISOかどっかに標準化した規格があるはず。
0157デフォルトの名無しさん2007/05/11(金) 23:45:16
C/C++は、同じ名前が付いてても互換性がないから、
それに嫌気を指した香具師等がJavaという標準仕様を作ったんじゃなかったか?
0158デフォルトの名無しさん2007/05/11(金) 23:46:15
×同じ名前が付いてても
○同じC/C++というのが付いている処理系でも
0159デフォルトの名無しさん2007/05/11(金) 23:47:55
ひきつづき、>>151 の後半の疑問に答えてくれる人を募集中
0160デフォルトの名無しさん2007/05/11(金) 23:49:27
オレはギブ
0161デフォルトの名無しさん2007/05/11(金) 23:51:25
C++厨がんばれ
0162デフォルトの名無しさん2007/05/11(金) 23:52:32
とりあえず、JIS X 3014 だと閲覧だけはタダで出来るみたいだから、そっち見るわ。

いちおー、>>151 の後半の疑問に答えてくれる人も継続して募集中。
0163デフォルトの名無しさん2007/05/11(金) 23:53:22
>>162
残念ながら自分で解明するしかないようだ
つーかそんなの知ったところで意味ないだろw
0164デフォルトの名無しさん2007/05/11(金) 23:55:39
>>163
pdf買うときに値段が 10倍ぐらい違うんだけど。
0165デフォルトの名無しさん2007/05/11(金) 23:55:52
>>146
http://www.jisc.go.jp/app/pager?%23jps.JPSH0090D:JPSO0020:/JPS/JPSO0090.jsp=&RKKNP_vJISJISNO=X3014
このJIS X 3014:2003は、ISO/IEC 14882:2003の翻訳。
0166デフォルトの名無しさん2007/05/11(金) 23:57:17
>>164
かってどおするよ
処理系の仕様を見ればいいんじゃねーの?
0167デフォルトの名無しさん2007/05/11(金) 23:58:51
>>166
処理系の仕様ってどこにあんの?
0168デフォルトの名無しさん2007/05/12(土) 00:00:02
処理系ってなんだか知ってる?
0169デフォルトの名無しさん2007/05/12(土) 00:00:57
>>167
あったとしても、コンパイラオプションとか
処理系依存のマクロ(__HOGE__)とかについてしか書いてないんじゃね?
0170デフォルトの名無しさん2007/05/12(土) 00:01:39
>>167
知りたい事は自分で調べろ
0171デフォルトの名無しさん2007/05/12(土) 00:02:51
ここのC++厨って、実はC++の仕様ちゃんと知らないんじゃね?
と、思わなくも無い。

まぁ、場末のスレだしレベル低いのしか集まらんよね。俺も含めて。
0172デフォルトの名無しさん2007/05/12(土) 00:03:45
大体レスしてる大半はオレJava厨だし
0173デフォルトの名無しさん2007/05/12(土) 00:05:03
C++できる人、消えちゃった?
0174デフォルトの名無しさん2007/05/12(土) 00:12:36
終わったな・・・・・
0175デフォルトの名無しさん2007/05/12(土) 00:39:52
>>167
166が想像していたものかどうかは知らないが、例としてVisual C++のやつ。
http://msdn2.microsoft.com/en-us/library/dtefa218(VS.80).aspx

無論、規格が処理系定義と定めている事柄について、Visual C++の場合はどうなのかということも書いてある。
例)符号有り整数型の式に右シフト演算を行った場合の挙動
http://msdn2.microsoft.com/en-us/library/336xbhcz(VS.80).aspx

また、独自仕様の解説も当然付いている。
例)__if_exists キーワード
http://msdn2.microsoft.com/en-us/library/zxk0tw93(VS.80).aspx

ただし、全ての独自仕様がそうだと明記されていないのが玉に瑕。
例)整数リテラルに対する接尾辞の1つ「i64」
http://msdn2.microsoft.com/en-us/library/00a1awxf(VS.80).aspx
0176デフォルトの名無しさん2007/05/12(土) 00:53:52
親切な方だな
0177デフォルトの名無しさん2007/05/12(土) 01:54:05
C++コンパイラを作ろうというのでなければ、
C++の標準仕様を知ろうとするのは無駄だよ。

標準仕様に合わせて書いたところで、
皆が使っているC++コンパイラが、
標準仕様に100%対応していないんだから。

高い移植性を要求される場合には例外を使うな
なんていう話もあるしさ。

標準仕様よりも、
使おうとしているC++コンパイラの癖を知ったほうがいい。

>>142
んなわけない。
ルールが大杉。

>>145
すでに土台が継ぎ接ぎだらけだから、ゼロから作り直さないとダメでしょう。
ダメなものは、いくら磨いても手直ししても、ダメだよ。
0178デフォルトの名無しさん2007/05/12(土) 07:45:51
C++が糞なお陰でJavaができたわけだから
ある意味C++ありがとう
0179デフォルトの名無しさん2007/05/12(土) 09:41:02
いや、Javaは単にお遊びでできたんだろ、最初は。
だから、初期仕様のメモリ管理はグダグダ。
0180デフォルトの名無しさん2007/05/12(土) 11:36:53
javaって本当に速くなってるのか?
実行環境が速くなってる分を引いたら、どのくらい速くなってるんよ?
0181デフォルトの名無しさん2007/05/12(土) 14:12:07
言語仕様が複雑で洗練されていないのは悪いわけではない。
C++は必要に応じて何でもできる、その何でもありがいいんじゃないか。
0182デフォルトの名無しさん2007/05/12(土) 15:14:09
別に何でもやるつもりはないし
0183デフォルトの名無しさん2007/05/12(土) 15:18:10
っていうかC++の言語使用なんてどーでもいーんじゃー
早くC++より早いJavaのコードをうpしろー
0184デフォルトの名無しさん2007/05/12(土) 15:43:33
>>181
必要に応じて何でもできる
裏を返せば
必要に応じて何でもしなきゃいけない

Windowsローカルの話で恐縮だが、
マイクロソフトのActiveXとかの土台になっているCOMに対応したプログラムを、
C++で書くと面倒くさいのよ。

Javaと同じことをするのに、大量のコードに注意を払う必要が出てくるのよ。

0185デフォルトの名無しさん2007/05/12(土) 17:05:34
>Javaと同じことをするのに、大量のコードに注意を払う必要が出てくるのよ
当たり前だハゲ
っていうかCOMとJava比べてどーすんだよ
0186デフォルトの名無しさん2007/05/12(土) 17:24:21
>>177
> C++の標準仕様を知ろうとするのは無駄だよ。
標準規格を読んだ事がある人の発言だったら説得力もあるかもしらんけど……

ちなみに、
> 使おうとしているC++コンパイラの癖を知ったほうがいい。
の癖ってのも、どの程度知ってるん?
0187デフォルトの名無しさん2007/05/12(土) 17:32:06
↓こっちでやれや

JavaやるとC++がセピア色に見える
http://pc11.2ch.net/test/read.cgi/tech/1172317252/
0188デフォルトの名無しさん2007/05/12(土) 17:34:23
突然ですが、アセンブリ、C言語使いの、35歳定年説って
本当ですか。これ聴いて、Cを読む気になりません。
0189デフォルトの名無しさん2007/05/12(土) 17:35:13
すれ違い
0190デフォルトの名無しさん2007/05/12(土) 17:38:31
>>187
いってらっしゃーい。もう帰って来なくて良いよ。
0191デフォルトの名無しさん2007/05/12(土) 17:42:35
むこうはC++厨が優勢だからJava厨はこっから出れまいw
0192デフォルトの名無しさん2007/05/12(土) 17:51:42
>>191
両方とも厨しかいないから、ぶっちゃけどっちでも良いっす。

隔離スレとして機能してくれれば。
0193デフォルトの名無しさん2007/05/12(土) 17:53:26
もう少しまともな人はC++0xスレとか見てるんだろうし。
0194デフォルトの名無しさん2007/05/12(土) 17:53:56
>>188 は すれ違い でした。
スルーでお願いします。
0195デフォルトの名無しさん2007/05/12(土) 17:58:59

…ゴクリ
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ   >>192 両方とも厨しかいないから・・・
 彡、   |∪|   |    >>193 もう少しまともな人はC++0xスレとか見
/     ∩ノ ⊃  ヽ      J
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
  
0196デフォルトの名無しさん2007/05/12(土) 18:09:40
>>185
C++でJavaに近いことをやろうとすると、COMのような仕組みが必要でしょ。

Windows向けにC++でプログラムを書く場合、
人様に使ってもらうDLLでは、C++のクラスをExportしてはいけない
という作法があるわけでさ。

>>186
↓の程度は知ってるよ
ttp://www.mozilla.org/hacking/portable-cpp.html
0197デフォルトの名無しさん2007/05/12(土) 18:13:02
Java使えよ
ActiveX使えよ
0198デフォルトの名無しさん2007/05/12(土) 18:19:12
仕様だけみててもやはり実装を見ないとなんともいえんのは
Javaの世界も同じだがな
0199デフォルトの名無しさん2007/05/13(日) 23:53:45
 
0200デフォルトの名無しさん2007/05/14(月) 22:03:57
スレが立って数ヶ月経つのに未だ自説だけしか書いてない時点でここのJava厨の程度が分かるわな
0201デフォルトの名無しさん2007/05/14(月) 22:33:55
…ゴクリ
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ   >>200 ・・・ここのJava厨の程度が分かるわな
 彡、   |∪|   |        |
/     ∩ノ ⊃  ヽ      J
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
  
0202デフォルトの名無しさん2007/05/14(月) 22:36:10
いい具合に隔離ス(ry
0203デフォルトの名無しさん2007/05/15(火) 00:08:22
>>201
じゃあ何かコードはってよくまさん
0204デフォルトの名無しさん2007/05/15(火) 00:11:28
…ゴクリ
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ   >>203 じゃあ何かコードはってよくまさん
 彡、   |∪|   |        |
/     ∩ノ ⊃  ヽ      J
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
  
0205デフォルトの名無しさん2007/05/15(火) 00:12:00
工エエェェ(;´Д` )ェェエエ工
0206デフォルトの名無しさん2007/05/15(火) 00:27:32
ぼくはくま
くま
くま
くま
0207デフォルトの名無しさん2007/05/15(火) 00:30:35
クマ膜
0208デフォルトの名無しさん2007/05/15(火) 00:46:19
・起動時間
・消費メモリ
をどうにかしてくれ
0209デフォルトの名無しさん2007/05/15(火) 00:50:55
起動時間:起動させっぱなしにしとけ
消費メモリ:メモリ増やせ
0210デフォルトの名無しさん2007/05/15(火) 00:53:23
つ 高速CPU
つ 高速HDD or 大容量フラッシュメモリ
つ 増設メモリ
0211デフォルトの名無しさん2007/05/15(火) 00:57:59
ソフトはタダで与える代わりにハードで金を巻き上げる・・・サンの思惑通りだな。







ただ、実際に買われるハードがサンのモノじゃないところが、m9(^Д^) プギャー!! ってとこだけどw
0212デフォルトの名無しさん2007/05/15(火) 01:06:34
今のサンはJavaはワシが育てたくらいの栄光しかないよね
0213デフォルトの名無しさん2007/05/15(火) 01:08:50
.Netにすりゃほぼ確実に金が入るMSに比べて勝ったか負けたか・・・・
0214デフォルトの名無しさん2007/05/15(火) 01:16:44
JavaFxがこけたら本格的に無償のJava保守要員だよね。
0215デフォルトの名無しさん2007/05/15(火) 01:19:42
サンは試合に勝って、勝負で負けたってとこか?
0216デフォルトの名無しさん2007/05/15(火) 01:56:59
ある意味MSには勝った
IBMには…惨敗だろうな
0217デフォルトの名無しさん2007/05/15(火) 02:27:26
自分はC++屋だけど、Javaって速いな! と思うことはあるよ。

まず、コーディングが速い。
C++よりも自由度が低いということは、考える余地がないということで、どんどん書ける。

次に、実行速度が速い。
まず、Javaの内蔵の文字列クラスが良くできていて速かった。
C++で参照カウンタを使って寿命を管理するオブジェクトを大量に構築・破棄するようなものも結構速かった。
そして何よりも、コーディングが速いので、その分、アルゴリズムを工夫するのに時間が使えて、より速くできた。
0218デフォルトの名無しさん2007/05/15(火) 05:50:17
だんだん宗教体験談みたいになってきた・・・。
0219デフォルトの名無しさん2007/05/15(火) 06:58:18
自分はC++屋だけど、Javaを使うと健康になるよ。

彼女も出来たし。C++屋だけど。
0220デフォルトの名無しさん2007/05/15(火) 07:35:14
そりゃそうだろ
0221デフォルトの名無しさん2007/05/15(火) 07:49:08
C++は健康的じゃないからな
いろんな意味で
0222デフォルトの名無しさん2007/05/15(火) 12:03:58
Javaを始めたら残業代が増えてお金持ちになりました
0223デフォルトの名無しさん2007/05/15(火) 13:08:33
JAVA VM も JAVAで書かれてるんだろ?
0224デフォルトの名無しさん2007/05/15(火) 13:16:44
VMそのもはJAVAでは書けないだろな。 JITとか、コンパイラなら書けるかもしれないが
0225デフォルトの名無しさん2007/05/15(火) 13:25:38
>>224
ネイティブのVMはJavaで書けないがJavaで書いたVMは可能だろ?
0226デフォルトの名無しさん2007/05/15(火) 13:28:53
親亀に小亀が……
0227デフォルトの名無しさん2007/05/15(火) 13:29:42
JDKにネイティブコードを生成できるコンパイラが付属するようになればC++並に高速化できる。
0228デフォルトの名無しさん2007/05/15(火) 13:34:55
>>225
確かに、x86で動くx86エミュレータみたいなもんか。 単に殆どの命令はそのまま実行させるという
0229デフォルトの名無しさん2007/05/15(火) 16:05:11
>>225

確かに可能だろうが、それってメリットあるのか?
デバッグ専用に作れば使いようはあるかもしれないが
0230デフォルトの名無しさん2007/05/15(火) 16:34:55
>>225
事実上は不可能じゃないか。
VMの上にVMを乗せて、メモリ管理やGCはどーするのよ?
0231デフォルトの名無しさん2007/05/15(火) 16:39:27
>>227
すこし上のほうで、
静的な最適化よりも動的な最適化のほうが速くなる
という話があったろうに。
0232デフォルトの名無しさん2007/05/15(火) 16:40:43
ていうか、
そんなにC++が速いと思うのなら、
JavaからC++へのコード・トランスレータを使えよ。


0233デフォルトの名無しさん2007/05/15(火) 16:42:13
>>230
作れるか作れないか、だけで言えば
Java+極一部アセンブラでOS作ってる人がいるんだから、
Java+極一部アセンブラとかでVM作れそうな感じもするけど。
0234デフォルトの名無しさん2007/05/15(火) 17:25:01
>>227
そんなあなたにGCJ
0235デフォルトの名無しさん2007/05/15(火) 17:47:40
ここって微妙に話噛み合ってないよな
隔離スレだから仕方ないが
0236デフォルトの名無しさん2007/05/15(火) 19:03:16
>>231
x86上で比較すると、まだインテルのコンパイラで最適化した方が速いと聞く。
0237デフォルトの名無しさん2007/05/15(火) 19:26:27
ばーかJVMが実行時に吐き出すのはアセンブラだろ
0238デフォルトの名無しさん2007/05/15(火) 19:27:45
アセンブラならさらにアセンブルとリンク・ロードパスが必要になる。
機械語モジュールだろ
0239デフォルトの名無しさん2007/05/15(火) 19:32:23
携帯のJavaは遅いぞ
0240デフォルトの名無しさん2007/05/15(火) 19:38:20
>>239
当たり前だろうに。
0241デフォルトの名無しさん2007/05/15(火) 19:41:11
>>234
GCC自体が遅いからイヤ
0242デフォルトの名無しさん2007/05/15(火) 20:45:16
VSで普通のJavaが組めない限り眼中に無いな
0243デフォルトの名無しさん2007/05/15(火) 20:48:55
C/C++やマシン語の最適化手法が限界なら
VMの変換するマシン語の最適化も人知では限界ということ
ジャワ厨の理論はそもそもから破綻しとるがな
0244デフォルトの名無しさん2007/05/15(火) 20:51:03
>>236
Intelの場合命令の並び替えは自分のCPUに特化出来るんだしJavaはMMXとか使えないんだから当然。
そうじゃなくて、もっと計算からかけ離れた業務アプリには向いてるんじゃないの?

ポリモフィズムを駆使したら、スコープ内で継承先が見えるような小さなルーチン以外はどうあがいたって静的には最適化出来ないの。JITでなければ不可能。
Expression Templateを動的にしてみれば分りやすい。
0245デフォルトの名無しさん2007/05/15(火) 21:45:01
だからなんだってゆ ── んだよ ───────────!!!!
0246デフォルトの名無しさん2007/05/15(火) 22:00:09
>Intelの場合命令の並び替えは自分のCPUに特化出来るんだしJavaはMMXとか使えないんだから当然。
こんな程度で最適化を語られてもねー。
バイトコードがそのまま動いてるとでも思ってるの?
0247デフォルトの名無しさん2007/05/15(火) 22:01:29
いいからC++よりはやいJavaのコードをうpしろおおおおおおおおおお!!!!
0248デフォルトの名無しさん2007/05/15(火) 22:02:39
俺はJITがどこまでやってくれるか知らないが、246はJITが自動ベクトル化や自動スレッド化までしてくれると思ってるの?
0249デフォルトの名無しさん2007/05/15(火) 22:04:04
248はJITが何で出来てると思ってるの?
0250デフォルトの名無しさん2007/05/15(火) 22:04:58
電気じゃね?
0251デフォルトの名無しさん2007/05/15(火) 22:08:30
>249
機械語で出来てると思ってる。
C++で書かれていると思ってる。
それが何か関係してくるの?

Perlでバイトコードを解釈してJITしてもいいんじゃないの?
まあ解釈が遅過ぎて足引っ張ると思うが。
0252デフォルトの名無しさん2007/05/15(火) 22:16:50
プログラムを組んでいる時間まで含めたらJAVAのほうが速いんじゃね?w
■ このスレッドは過去ログ倉庫に格納されています