繁体   English   中英

像iostream这样的大型包含文件是否有效? (C ++)

[英]Are large include files like iostream efficient? (C++)

Iostream,当它包含的所有文件,包含它们的文件等等时,总计大约3000行。

考虑一下hello world程序,它不需要比在屏幕上打印东西更多的功能:

#include <iostream> //+3000 lines right there.
int main()
{
    std::cout << "Hello, World!";
    return 0;
}

这应该是一段非常简单的代码,但是iostream在边缘代码中增加了3000多行。 那么,这些3000多行代码是否真的需要简单地在屏幕上显示一行,如果没有,他们是否创建了一个效率较低的程序,而不是简单地将相关行复制到代码中?

如果你担心<iostream>的大小,只要打印一行文本,请尝试<cstdio>std::puts()

(说真的,为什么人们使用printf()cout时更简单,更快速的puts()完全适合账单?它甚至会自动添加适当的换行...)

严肃的应用程序中, <iostream>的大小和编译时间不会很大。 (另外,正如其他人已经指出的那样,链接器不会链接到未使用的内容。)

编辑:我刚刚意识到我并没有真正回答这个问题。 不,并非所有3000行都是真正需要打印代码行的,但是您会发现几乎不可能找到生成输出行所需的“几行”,因为I / O库源往往是严重相互依赖。 除了增加编译时间之外,它们不会造成损害 - 因为在链接器阶段丢弃“绒毛”,所以代码的效率不会降低。

它使编译变慢(但可以使用预编译的头文件等减轻),但是任何体面的链接器都应该删除不需要的东西。

编译器删除了链接步骤中不需要的所有内容。 对编译器充满信心,不需要手动清洁! 关于性能如果您在许多cpp文件中使用了许多大头文件,请考虑使用预编译头文件,这将大大提高编译时间性能(包含的头文件已预先解析并重新使用)。

在C ++中,代码中未调用的函数不会被编译。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM