Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编译器-用于定义代码块的内容会影响编译器速度吗?_C#_Python_Compilation_Compiler Construction - Fatal编程技术网

C# 编译器-用于定义代码块的内容会影响编译器速度吗?

C# 编译器-用于定义代码块的内容会影响编译器速度吗?,c#,python,compilation,compiler-construction,C#,Python,Compilation,Compiler Construction,请注意,在这个问题中,我将比较Python和C 今天我想到了一个有趣的问题, 在C{}中,大括号用于定义代码块,在Python中,空格缩进用于定义代码块。 我很想知道这是否会影响编译器的速度 Python: C 我知道这两个编译器都是为了处理指定的语法而创建的,但是使用不同的代码块标识会对编译器不利吗?答案基本上是否定的,或者这个问题没有任何意义 现代编译器通常有两个前端部件,一个扫描器通常是一个简单的基于正则表达式的有限状态机,除了状态之外没有内存,尽管有些语言需要在解析器和扫描器之间以及使用

请注意,在这个问题中,我将比较Python和C

今天我想到了一个有趣的问题, 在C{}中,大括号用于定义代码块,在Python中,空格缩进用于定义代码块。 我很想知道这是否会影响编译器的速度

Python:

C


我知道这两个编译器都是为了处理指定的语法而创建的,但是使用不同的代码块标识会对编译器不利吗?

答案基本上是否定的,或者这个问题没有任何意义

现代编译器通常有两个前端部件,一个扫描器通常是一个简单的基于正则表达式的有限状态机,除了状态之外没有内存,尽管有些语言需要在解析器和扫描器之间以及使用基于堆栈的机器(称为下推自动机)的某种变体的解析器之间进行一些复杂的反馈

扫描器执行简单的操作,并将输入流转换为一系列令牌。然后,解析器根据语法(通常是语法)识别这些标记。解析器的输出是或AST。AST代表程序;至此,像支撑块和压痕这样愚蠢的小细节就消失了


大多数语言的大部分编译时间都发生在这一点之后。然而,对于某些语言来说,词法分析时间非常重要。由于Python对编译时进行的优化相对较少,因此扫描器的速度可能相当快。尽管如此,用缩进而不是大括号定义块的方式对扫描仪性能影响不大:分配令牌的智能算法以及实现扫描的有限状态机的速度更是占主导地位。

感谢您提供了详细的答案。这篇文章写得很好,内容丰富,为这个糟糕的问题道歉。
x = 1
if x == 1:
    # indented four spaces
    print("Hello World")
x = 1
 if(x == 1)
{
  Console.WriteLine("Hello World");
}