如何有效地管理中间产出?

时间:2013-03-28 04:16:56

标签: string pipe pipeline c-preprocessor temporary-files

我在C ...中实现了一个C预处理器

我有三个功能:

  1. 三角形替换功能
  2. 线拼接功能
  3. 评论删除功能
  4. 然而,这些功能分别对文件起作用,即

    第一个函数将获取一个文件并替换产生temp-file1作为输出的三字母

    第二个函数将temp-file1作为输入并拼接行并生成另一个temp-file2。

    第三个函数将temp-file2作为输入并删除注释并生成另一个temp-file3。

    现在主要的预处理任务将在temp-file3上执行,.i文件将作为最终输出生成。

    现在,我有3个选择:

    1. 使用临时文件
    2. 使用管道
    3. 代替中间临时文件或管道使用字符串(即整个temp-file1,2和3将是三个大字符串!!)
    4. 我有三个疑惑......

      1. 选项1似乎效率低于option2
      2. 选项2似乎是完美的,但我会受到那个未命名管道大小的限制吗? (因为我有 单个进程 ,即函数1 2& 3将一个接一个地调用)如果温度输出大小>管道的总容量?
      3. 选项3 ......它比以前的两个更有效率,更容易吗?
      4. 请告诉我,我应该选择哪个选项?

1 个答案:

答案 0 :(得分:0)

我认为选项2是如何实现一些C编译器的:C预编译器管道到C编译器,它汇编到汇编器。管道缓冲区的大小不是问题,因为进程同时运行,而不是顺序运行。管道在生产者 - 消费者关系中实现传统的FIFO队列。