“\ n”vs“\ n”效率

时间:2015-11-09 17:48:50

标签: c++ optimization newline

所以我正在学习C ++而且我很清楚我患有过早的优化综合症,但是我觉得代码是世界上为数不多的最能实现完美目标的东西之一,所以我正在尝试在这里最大限度地提高性能和效率,以及开发绝对最佳实践。

因此有三种方法(我现在知道)要做新行:

cout << "Hello, World." << endl;
cout << "Hello, World." << "\n";
cout << "Hello, World." << '\n';

尽管几乎所有初学C ++书籍都在早期使用它,但我自己的研究表明,除非你知道必须“清除缓冲区”,否则应该避免使用endl。我对“缓冲”甚至是什么的理解在这一点上几乎是无关紧要的。

因此,对于大多数情况,它会缩小到"\n"'\n'。然后我收集说"\n"被读作两个单独的字符并转换为一个字符。这清楚地表明在将变量发送到cout之类的对象后输入换行的情况下使用的内容:

int age = 25;
cout << "age = " << age << '\n'; // more efficient
cout << "age = " << age << "\n";

我的主要问题 - 当你用字符串结束语句时哪个更好?

int age = 25;
cout << "I am " << age << " years old.\n";
cout << "I am " << age << " years old." << '\n';

一个包含字符串中的\ n转义符,但包含一个额外的字符。另一个具有单个'\n'字符,但需要额外的<<运算符。有没有办法衡量哪一个最终更好?我意识到我在这里分裂,但是我没有个性能让我在没有答案的情况下克服这些简单的事情。

在一个可能包含数千种这类线路的程序中,如果它存在,我想保存那段CPU时间。感谢。

2 个答案:

答案 0 :(得分:1)

你应该使用第一个。第二个需要额外的函数调用。更重要的是,我认为打字也更自然。

答案 1 :(得分:1)

如果您认为

cout << "I am " << age << " years old." << '\n';

可能会更好,那为什么要停在那里?通过扩展,这反过来会更好:

cout << "I am " << age << " years old" << '.' << '\n';

依旧......

cout << "I am " << age << " years ol" << 'd' << '.' << '\n'; // etc...

坚持使用原始的纯字符串。