端末で情報を確認するためだけに書いているゲーム用の非常に単純な Log クラスを作成しました。しかし、私がそれをした方法は、あまりにも非効率的だと感じているので、私を悩ませています. 何かをログに記録するたびに、そのコンストラクタとデストラクタが呼び出されます。そのため、現在のフレーム レート (例: 60fps) を印刷したい場合、cont/desct は 1 秒間に 60 回呼び出されます (1 秒間に 60 個のログ オブジェクトを作成および破棄します)。何かをログに記録するたびにゲーム内でログ オブジェクトを渡し続けたくないし、サインレットンも使いたくない。より良い解決策はありますか。
#include <iostream>
#include <sstream>
class Log
{
public:
Log() : os()
{
}
~Log()
{
fprintf(stderr, "%s\n", os.str().c_str());
}
std::ostringstream &Write()
{
os << "from log class: " << 1337 << "\t";
return os;
}
private:
std::ostringstream os;
};
int main(int argc, char *argv[])
{
Log().Write() << "Hello world " << 45;
return 0;
}