评论是否会降低编译语言的速度?

时间:2016-06-08 09:46:23

标签: c# c

这里有几次关于解释语言或R的问题,但我没有找到任何关于编译语言的信息,特别是C#。

根据我所读到的内容似乎可以忽略不计,但它仍然会导致解释语言的速度减慢: Do comments slow down an interpreted language?

编译语言怎么样?!他们只减慢编译过程但不执行?

4 个答案:

答案 0 :(得分:11)

编译程序时,编译器实际执行:

  • 词法分析(标记化)
  • 语法分析(解析)
  • 语义分析(检查语言规则)
  • [中级]代码生成
  • 代码优化(可选)

对于评论,他们应该在词法分析阶段提取作为标记,并在语法分析(解析)阶段退出。因此,您可以放慢编译器的速度,但不能减慢生成的代码

许多解释语言通常会先执行两到三个阶段,然后再执行,因此评论不一定会减慢甚至解释语言

答案 1 :(得分:4)

编译器有以下几个阶段:

  • 词法分析
  • 语法分析
  • 语义分析
  • 生成与机器无关的代码
  • 代码优化
  • 生成最终代码

词法分析中,会跳过评论,这基本上就像你没有写任何内容。

所以不,它们不会以任何方式影响性能。

答案 2 :(得分:2)

评论将从词汇分析阶段

中排除

但如果在词汇分析阶段解析带注释的代码,则可能需要花费更多时间作为没有注释的代码进行比较,但 注释不会影响执行时间 < /强>

为什么不亲自尝试,请查看以下示例并运行它。

class Program
{
    static void Main(string[] args)
    {
        DateTime StartTime;
        DateTime EndTime;
        TimeSpan ExecutionTime;

        StartTime = DateTime.Now;
        for (int i = 0; i < 10000;)
        {
            i++;
            for (int j = 0; j < 100000;)
            {
                j++;
            }
        }
        EndTime = DateTime.Now;
        ExecutionTime = (EndTime - StartTime);

        Console.WriteLine("Phase 1 without comment done.");
        Console.WriteLine("Phase 1 start time : " + StartTime.ToString());
        Console.WriteLine("Phase 1 end time : " + EndTime.ToString());
        Console.WriteLine("Phase 1 Execution Seconds : " + ExecutionTime.TotalSeconds);

        Console.WriteLine("\r\n---------------------------------------------\r\n");

        StartTime = DateTime.Now;
        for (int i = 0; i < 10000;)
        {
            i++;
            for (int j = 0; j < 100000;)
            {
                j++;
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
                // SOME COMMENT.
            }
        }
        EndTime = DateTime.Now;
        ExecutionTime = (EndTime - StartTime);

        Console.WriteLine("Phase 2 with comment done.");
        Console.WriteLine("Phase 2 start time : " + StartTime.ToString());
        Console.WriteLine("Phase 2 end time : " + EndTime.ToString());
        Console.WriteLine("Phase 2 Execution Seconds : " + ExecutionTime.TotalSeconds);

        Console.ReadKey();
    }
}

答案 3 :(得分:0)

编译器不会减慢程序速度,它会忽略所有注释并获取原始代码。