銀河系まとめブログ

C++が速いとか言われてるけど

  • 1
  • 3

2. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:02:44.559 ID:iHILekXV0

結局機械語にコンパイルしたら全部一緒です
になりそうな気がしてならない

3. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:03:01.489 ID:gfPfxNVD0

でもコンパイル可能な言語全部速度おなじではないよね?

7. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:04:28.796 ID:iHILekXV0

>>3
なぜ一緒じゃないの?

4. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:03:33.199 ID:4YfMuB6r0

C#ガイジ

5. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:03:46.291 ID:YnzO04ss0

このスレはC#ガイジが立てたスレです

6. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:04:24.297 ID:hJp3Z2bH0

意味不明すぎない?

9. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:05:11.340 ID:iHILekXV0

>>6
いや意味はわかるだろ
コンピュータの上では機械語(0と1の羅列)が動いてるわけでC++が動いてる訳ではない

8. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:04:34.393 ID:q/sqZX030

コンパイラが違うなら結果は異なるものになるのでは

11. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:05:39.852 ID:iHILekXV0

>>8
やっぱ結局機械語に翻訳するコンパイラなんだよなぁ

10. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:05:17.387 ID:hAI1Lcio0

違うぞ
C言語はエラーチェックしてないから速いんだぞ
その代わりエラー出たら即落とされる
高級言語は逐一やばい操作してないかチェックしてやばかったら例外投げる

12. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:06:25.051 ID:iHILekXV0

>>10
エラーチェックは機械語でやってんじゃないの?
JavaとかC#とかのJITでもそうだろ?

15. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:07:26.751 ID:hAI1Lcio0

>>12
やってないよ
すぐコアダンプ履くだろ

17. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:09:02.030 ID:iHILekXV0

>>15
じゃあエラーチェックはJITコンパイラがその都度やってんの?

23. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:14:34.440 ID:hAI1Lcio0

>>17
JITだろうがそうでなかろうが関係無いよ
多くの高級言語はアプリレベルだろうがVMレベルだろうが関わらずとにかくチェックする仕組みがある
例えば配列のアクセスとかでも
int a[10];
int b;
a[10]=0;
とかしたら高級言語なら例外出るっしょ?
それはチェックしてるから

25. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:19:06.683 ID:iHILekXV0

>>23
なるほどどこで安全性チェックやってるかわからんがとりあえずどっかでは安全性のチェックやってるんだな
C#は明らかに安全だと安全性チェック行わないらしい
ihoge[]のアクセス時安全性チェックしないってさ

13. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:06:28.125 ID:MC6nQ8yW0

オレのパソコンは普通にPythonでも速い
お前らの使ってるパソコンってXP時代とかの奴じゃないの

14. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:06:47.939 ID:iHILekXV0

>>13
そういうこと言ってるんじゃないけど

16. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:08:09.759 ID:1XV8yJnn0

実装依存で速く出来る可能性があるってだけ
チンカスが書いたC++とまともなやつが書いたPythonならPythonの方が速いかもしれない

18. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:09:40.840 ID:MC6nQ8yW0

むかしのしょうもないファミコンの時代だとアセンブラが最速で
みたいな話あったんで
いまだにこの2025年で工夫しながらプログラミングとかしてる人見ると
なんかさぁ、無駄な苦労をするタイプに見える
きっと良いプロダクト出来てないと思うよ、まぁ無駄な苦労を繰り返しなよ、お似合いだよ

19. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:10:53.356 ID:q/sqZX030

ちゃんと考えて組まないと遅くなるガベージコレクション搭載してる言語
ちゃんと考えないと危険なメモリ操作しようとするC言語
しかもコンパイラが僕の考えた最高に効率のいいプログラムに変換しようとするので、動かしてみないと気づかなかったりする

22. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:14:21.372 ID:iHILekXV0

>>20
まぁそれはあるけどだからと言ってほかの言語で機械語にコンパイルしたプログラムがC++で機械語にコンパイルしたプログラムより早くできる可能性は0ではないよね
結局機械語次第だよね?

21. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:13:06.085 ID:14wvvK1t0

CやC++が他のコンパイル言語より速い理由は、以下の点にあります。
1. コンパイラ最適化のしやすさ – C/C++は低レベルな制御が可能で、高度な最適化を受けやすい。
2. ランタイムの影響が少ない – RustやGoはメモリ安全性のための追加処理があり、C/C++よりオーバーヘッドがあることが多い。
3. メモリ管理の違い – C/C++は手動管理が可能で、ガベージコレクション(GC)の影響がない。
4. 標準ライブラリの設計 – 高レベルの抽象化を持つ言語(Rust, Swiftなど)は利便性の代償としてオーバーヘッドが発生しやすい。
5. 低レベル最適化の自由度 – C/C++はハードウェアに最適化しやすく、最高のパフォーマンスを引き出せる。

最終的にどの言語も機械語になるが、言語の設計とコンパイルの仕組みの違いにより、C/C++がより高速に動作することが多い。

24. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:15:14.180 ID:iHILekXV0

>>21
ふむふむ勉強になる
つまり利便性と性能はトレードオフってことね

26. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:20:23.795 ID:bTyQg+QNr

>>24
つまりC#は遅い

28. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:23:26.846 ID:iHILekXV0

>>26
機械語にコンパイルしたら速い!

27. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:23:20.592 ID:0cJKyQ8r0

C系列はコンパイルしたらこういう機械語を吐くよねってのが大体想像できちゃう

29. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:23:39.610 ID:iHILekXV0

>>27
そうなんだ

30. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:26:16.505 ID:Ne7rlDi60

C#のコンパイラって裏側LLVMなの?

33. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:29:09.698 ID:iHILekXV0

>>30
.NETだけど最近NativeAOTが実装された
UnityのBurstコンパイラーはLLVMだね

31. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:26:27.412 ID:0cJKyQ8r0

C言語では a[i] が *(a+i) と等価だってのは機械語やったことがある人から見ると「ああ、うん」という感じなのな

34. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:29:11.864 ID:/obmWYY4M

>>31
それは機械語関係なくC言語の事情でしかないと思う
糖衣構文ってやつ

36. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:31:33.949 ID:0cJKyQ8r0

>>34
インデックスレジスタの話

35. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:31:04.199 ID:iHILekXV0

>>31
C言語やってないけどわかるわ
配列はメモリが一直線になるからaのアドレスにiを足したところのアドレスがa[i]になる

32. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:27:38.689 ID:Ne7rlDi60

めっちゃ強強の型システムで配列の要素数をコンパイル時に決定して、実行時に全くチェックしないLLVMをバックエンドにもつ言語あったら、Cと同程度に速そう

37. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:32:09.571 ID:NrdB0ycJ0

C++でも効率悪いコードなんていくらでも書けるぞ

38. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:33:22.503 ID:0cJKyQ8r0

>>37
むしろ、それこそがC++の強みやねん

39. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:39:49.144 ID:MC6nQ8yW0

おまえさ一回くらいアセンブラやったほうが良いぞ
ただアドレスを移動させるだけの話をかっこつけてインデックスレジスタとか言い出すのは
アセンブラしたことないから変に夢見てるっていうか…かっこいい事だと激しく誤解してるって…
やっぱバレるよ

40. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:41:15.005 ID:NrdB0ycJ0

vectorの使い方だけでもメモリの取り方知ってるやつと知らずに使ってるやつとで実行速度全然変わるもんな

42. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:43:46.175 ID:qaMv3fbd0

>>40
へぇー
ベクター結構Unityで使ってるから気になるわ

41. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:42:38.299 ID:Lfc3waEL0

ここの人ら言ってる話全部あってるけど、スピードの話は言い出したらきりがないと思う
例えばCやC++はリンケージが違うと引数のエイリアス性が分からなくなるので、LTOが優秀でないと場面によってはRustより性能が落ちる
一方でRustはある程度最適化が働くにしろパターンマッチやunwrapやライフサイクルの都合で明らか不要な処理が生じることもあるのでそこは劣ることもある
更にLLVMやGNUバックエンドとの相性だのISAだの、他の言語含めるならGCだのJITの性能だの考え出したらキリがない

一応それでもCやC++は割と直感的な分アセンブラが想像しやすい。つまり早いコードが書きやすいし実際そうなりやすいとは思うけど
組み込み系と競プロ系のお人以外がそこまで気にするかというとんにゃぴというか
んなこと気にするよりアルゴリズムと設計見直すだけで済むことの方が多いんじゃねと思う

43. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:44:20.972 ID:MC6nQ8yW0

LTOが優秀ってなんえそれ
うっすい話をよー言えるな、こいつ

45. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:51:48.321 ID:Lfc3waEL0

>>43
あんま喧嘩したかねーけど、俺よりうっすい話で煽ってるだけのおじさんに言われたかねえわw
昔の事以外知らないなら黙ってパンチカードの前で誰も覚えてないアセンブラでもぽちぽち打ってなさいな

44. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:49:23.003 ID:0cJKyQ8r0

MC6nQ8yW0←なんかモトローラっぽい
を呼び出すことに成功したよん

20. 名前:以下、5ちゃんねるからVIPがお送りします 投稿日時:2025/02/21(金) 19:13:02.423 ID:B3K0tKPX0

言語違かったらコンパイラが違うし機械語への翻訳も変わるんじゃないん?

コメント一覧

1件のコメントが投稿されています。

1. 名前:銀河系まとめブログ@名無しさん 投稿日時:2025年02月23日 01:37 ID:ZymiwV0r0

そんなに速さを求めるならアセンブラで書いたらいい
まぁ、一般的にはマシンを買い換えたりでそこまで手間かけないけど
ガチ勢は機械語書き換えてくるよ