[英]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.