首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++日志类效率低下?

c++日志类效率低下?
EN

Stack Overflow用户
提问于 2012-09-08 16:35:04
回答 2查看 189关注 0票数 0

我为一个游戏写了一个非常简单的日志类,我写这个游戏只是为了在终端上看到一些信息。但我的做法让我很困扰,因为我觉得效率太低了。每次我记录某件事时,都会调用它的构造函数和析构函数。因此,如果我想打印当前帧速率(例如60 log ),cont/cont将被每秒调用60次(每秒创建和销毁60个日志对象)。我不想每次都要在游戏中传递一个日志对象,我也不想使用路标。有没有更好的解决办法。

代码语言:javascript
复制
#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;
}
EN

回答 2

Stack Overflow用户

发布于 2012-09-08 16:49:03

我建议使用一些现有的日志记录框架。人们付出了很大的努力,使它尽可能快和灵活。

以下是对现有日志记录框架的良好描述:

https://stackoverflow.com/questions/696321/best-logging-framework-for-native-c

票数 1
EN

Stack Overflow用户

发布于 2012-09-08 17:24:43

您正在假设构造函数和析构函数效率低下。根据我的经验,如果它们是在头文件中声明的(就像您的一样),如果它们是简单的(就像您的那样),那么您可以相信编译器会将它们内联并做得非常好。对printf的呼吁将占据主导地位。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12332522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档