4

iostream型のクラスを作りたいです。画面に一連の文字を書き込む最も効率的な方法を見つけたいと思います。アイデア:

printf-自分で行う必要がある型の書式設定は必要ありません。
WriteConsole-printf よりも遅いことを確認しましたか? 真/偽?
*アセンブリ -
他の方法を知りませんか?

*私の主な関心事は、それを行う方法を見つけることができるかどうかです. 私は時間まで急ぐ必要はありません。

編集: 何らかの理由で WriteConsole が遅くなります。

4

3 に答える 3

4

「fwrite」を使用します。

fwrite( buffer, size, 1, stderr );

これは、必要以上に高速になります。そして、iostream クラスがコンソールだけでなくファイルにも書き込めるようにすることができるというボーナスがあります。

于 2012-06-21T19:43:06.173 に答える
1

いくつかの方法を試して(いくつか言及しました)、結果をベンチマークすることをお勧めします。結果に驚くかもしれませんが、たとえ結果が期待通りだったとしても、少なくとも最善を尽くしていると確信できます。ただし、記録として、printf よりもはるかに高速であることがわかったら、私は驚かれることでしょう。

(私の経験では) 最も実用的なコーディング方法は次のとおりです。

  1. 機能的に実行するものを取得します。
  2. ベンチマークを設定して、ソリューションが十分に高速かどうかをテストします。
  3. 十分に速くない場合は、別の方法を試してから 2 に戻ります。
  4. それが十分に速い場合は、完了です!

質問から設計/コーディングを開始していないようです。時期尚早の最適化に注意してください...

于 2012-06-19T22:45:52.340 に答える
1

Windowsの場合、 とWriteConsoleOutputCharacter()ほぼ同じ平均を使用fwrite()stdout、 を使用していない場合は、含めるファイルが 1 つ少ないことがわかりました<stdio.h>。どちらも非常に高速ですが。私はテストしませんでしたFillConsoleOutputCharacter()。おそらく、それほど優れたベンチマークも使用していません。時期尚早の最適化に関しては、コンソール ウィンドウ用のクールな小さなライブラリを作成するときに、最初にこの問題に取り組まなければなりませんでした。私はこのシステムを大学や個人的なテキスト ベースのゲームに使用しました。ロギングや同様の動作についてcoutは、 and friends を使用すると、遅い(より遅い)にもかかわらず、同じように機能します。

于 2015-04-12T08:08:48.217 に答える