簡體   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