アカウント名:
パスワード:
C++は全然重くないですよ?
重いんだとしたら、重くなるようなコードを書いたせい。C++のせいではありません。
*
CとC++はかなり性質が異なる言語なのに、よく「C/C++」とまとめられてしまう一方、パフォーマンス傾向としてはほとんど同じなのに、どうして「C++はCよりも重い」という根拠のない言いがかりをよくつけられるんでしょうねえ。
>Cに比較してパフォーマンスがた落ちですね。
C で OOP やると同様のことが起こるので、C++ のせいではない気がする。手続き型アプローチに対して OOP を否定しているだけで、言語間の比較になっていないような。メモリ管理も placement new を使うとか個別にアロケータ用意するなりすればいいだけだし。本当に virtual 必要な箇所については、C でも関数ポインタ使ったりするわけで、C++ だから遅いわけではない。
C++ だから重くなるのは『言語サポートされる不要なメモリ管理コード (new, delete の実装) が付いてくる』とか『例外処理使ったときなど RTTI 用にシンボル文字列が付いてくる』とか、その辺くらいじゃないかなぁ。
動的推定ってことは RTTI ってこととしてコメントすると、ABI 的には仮想関数テーブルを持つクラスに対して、一意のシンボル(たいてい文字列)が埋め込まれるだけですので、
> 使われるかどうかも分からない似たようなバイナリコードを多数リンクせざるを得ない
というのとはちょっと違う気がします。
コンテナ等、テンプレート使っていろんな型でインスタンス化すると、静的にコード バリエーションが増えるので、結果としてバイナリは肥大化しますが、その辺の話と混同されてる?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日々是ハック也 -- あるハードコアバイナリアン
組み込みな人は死ねってこと? (スコア:3, 興味深い)
特に小規模な方ですと、アセンブラに回帰ですか? それじゃプログラマはもっと地獄でしょ。
#ツッコミ入ると思うから念押しておくけど、携帯のアプリプロセッサやブルーレイレコーダーとかぐらいの規模(とリソース)のものは、寧ろ例外に近いものですし。
Re: (スコア:1)
C++は全然重くないですよ?
重いんだとしたら、重くなるようなコードを書いたせい。
C++のせいではありません。
*
CとC++はかなり性質が異なる言語なのに、よく「C/C++」とまとめられてしまう一方、パフォーマンス傾向としてはほとんど同じなのに、どうして「C++はCよりも重い」という根拠のない言いがかりをよくつけられるんでしょうねえ。
Re: (スコア:1, すばらしい洞察)
Cで引数などで構造体をコピーしているのと同等なので、「コードのせい」という理解はあっているでしょう。
しかし、「オブジェクト指向的な要素を使わなければ」という条件付きですね。
きちんとオブジェクト指向プログラミングすれば、
カプセル化した中で、勝手にメモり管理したり、virtual使ったりして、
Cに比較してパフォーマンスがた落ちですね。
Re: (スコア:0)
>Cに比較してパフォーマンスがた落ちですね。
C で OOP やると同様のことが起こるので、C++ のせいではない気がする。手続き型アプローチに対して OOP を否定しているだけで、言語間の比較になっていないような。メモリ管理も placement new を使うとか個別にアロケータ用意するなりすればいいだけだし。本当に virtual 必要な箇所については、C でも関数ポインタ使ったりするわけで、C++ だから遅いわけではない。
C++ だから重くなるのは『言語サポートされる不要なメモリ管理コード (new, delete の実装) が付いてくる』とか『例外処理使ったときなど RTTI 用にシンボル文字列が付いてくる』とか、その辺くらいじゃないかなぁ。
Re:組み込みな人は死ねってこと? (スコア:0)
型の動的推定に対応するために、型が違うだけで使われるかどうかも分からない似たようなバイナリコードを多数リンクせざるを得ないから、C++だとどうしてもバイナリが肥大する、というような話を昔、聞いたのですが、そのあたりは解決しているんでしょうか?
Re: (スコア:0)
動的推定ってことは RTTI ってこととしてコメントすると、ABI 的には仮想関数テーブルを持つクラスに対して、一意のシンボル(たいてい文字列)が埋め込まれるだけですので、
> 使われるかどうかも分からない似たようなバイナリコードを多数リンクせざるを得ない
というのとはちょっと違う気がします。
コンテナ等、テンプレート使っていろんな型でインスタンス化すると、静的にコード バリエーションが増えるので、結果としてバイナリは肥大化しますが、その辺の話と混同されてる?