簡體   English   中英

每個#include 指令的預處理器的時間成本是多少? [等候接聽]

[英]What is the time cost for the preprocessor for each #include directive? [on hold]

背景

CC++中,header 文件是允許 ZA2F2ED4F8EBC2 到 CBB61D4 以及其他實體之間定義相同的文件。 當另一個文件需要這些 header 文件中的設施時, #include以三種方式之一使用:

#include <stdio.h>         // Include the contents of the standard header 
                           // 'stdio.h' (probably a file 'stdio.h').
#include <vector>          // Include the contents of the standard header 
                           // 'vector' (probably a file 'vector.h').
#include "user_defined.h"  // Include the contents of the file 'user_defined.h'.

在每種情況下,預處理器都會將文本從 header 文件復制到#include所在的文件中。 鑒於 header 文件的普遍流行,我很好奇 header 文件包含的復制粘貼方法添加的時間。 因此我的問題...

問題

預處理器用文本替換它遇到的所有#include指令的時間成本是多少?

從概念上講,預處理器是編譯 C 代碼的獨立步驟。 處理預處理指令所需的原始時間將因編譯器和操作系統而異。 更改搜索處理順序的編譯器選項或 output 的“后預處理器”output 作為單獨的文件也將更改所需的時間。

您將主要受 I/O 時間的限制,因為即使使用 SSD,處理器/主 memory 也比 I/O 快得多。 I/O 處理將占用兩個 forms; 搜索標題並讀取 header 文件。 復雜的宏擴展也可能需要時間,但同樣由於 I/O 和主要 memory 速度的相對差異,這通常次於實際查找和讀取 header 文件。

大多數編譯器將允許您生成預處理器 output 而無需完全編譯為二進制,並且大多數操作系統都有監視或分析進程/命令的方法。 您可以使用這些功能大致了解所用時間以及 CPU/內存和 I/O 的使用方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM