by
Anonymous Coward
on 2004年02月16日 20時55分
(#496892)
まあ、なんというか比較の問題なのだけど。
例えば C でサイズの大きい構造体を call by value の引数にして関数呼出しすると、スタックに大きいデータを積む関係で、実行速度は遅くなりますよね。
C で書く場合には、ほんの幾つかの点に気をつけてれば上の例のような状況を避けて実行速度の速いコードを書けるのですが、C++ で書くと、このへんの見通しが極端に悪くなるので、かなり大変なんですよ。
C++ を使って、ちゃんとカプセル化して、実行速度の速いコードを書けるってかなりの上級者ではないかな。
Mona搭載・・・ (スコア:1)
・Mona搭載PC
・Mona搭載モバイル
・Mona搭載ケイタイ
・Mona搭載PSX
#搭載する意味があるのか分からないがID
Re:Mona搭載・・・ (スコア:3, 参考になる)
Monaは基本的にC++で開発されているので、携帯等のプアな環境には向きません。
もっとも、最近の携帯は数世代前のPDAよりも強力になってきてますが。
Re:Mona搭載・・・ (スコア:1)
Re:Mona搭載・・・ (スコア:1)
そう言ってカトラー氏はC++のコードをCで書き直したとか。
初代NT開発時の逸話ですから、当時とはコンパイラの最適化周り等
事情は多分に異なるでしょうが、一般PCでは気にならないことも
プアな環境では大きく響いてくることはお分かりかと思います。
私の主観ではありますが、まだ資源の限られた状況で気ままに
走らせられるとは思いません。
Re:Mona搭載・・・ (スコア:3, 参考になる)
しかし、かつて同じようにCのバイナリはあまりにも効率が悪く使いものにならないとMC68000で大量のアセンブラコードが書かれた事がありましたが、今では「gccの吐く68000コードはあまりにも効率が良く人間がいじる余地がない」という声を聞きますよね。また、かつてBe-OSは当時の環境 (今のPDAよりプアだったように思います) で高いパフォーマンスを見せていたように記憶しています。
コンパイラと設計次第だったりはしませんかね。いや、「使っちゃいけないC++の重要な機能」なんてのがあれば本質的な弱点なのでしょうけど…。
Re:Mona搭載・・・ (スコア:1, 参考になる)
例えば C でサイズの大きい構造体を call by value の引数にして関数呼出しすると、スタックに大きいデータを積む関係で、実行速度は遅くなりますよね。
C で書く場合には、ほんの幾つかの点に気をつけてれば上の例のような状況を避けて実行速度の速いコードを書けるのですが、C++ で書くと、このへんの見通しが極端に悪くなるので、かなり大変なんですよ。
C++ を使って、ちゃんとカプセル化して、実行速度の速いコードを書けるってかなりの上級者ではないかな。
同じように実行速度が必要なGUIの場合はクラスライブラリ化した方がメリットがあるから、頑張って高速化したけど、OSの場合はそこまでやるメリットがあるかどうかもポイントなんじゃないですかね。
Re:Mona搭載・・・ (スコア:1)
納得しました。高パフォーマンスは可能だけどそれなりの労力が必要って事ですね。ありがとうございます。
Re:Mona搭載・・・ (スコア:0)
・クラスメソッドで名前空間がすっきり
・関数のオーバーロードにより、同機能のAPIは同名の関数で呼び出せる
ぐらいのベターCとして使えば、
Cと比べて効率は落ちず、しかも、読みやすいものになるんじゃないかと思うんですがどう
Re:ベターC (スコア:0)
まぁMozillaはあらゆるプラットフォームの C++コンパイラを通すために使い方を厳しく取り決めているという理由もあるんですが。
Re:Mona搭載・・・ (スコア:0)
>余地がない」という声を聞きますよね。
稀にそういう話も聞きますが、大概の場合、C かアセンブリ、あるい
は両方に精通されてない場合が大概ですな。