C++ 括号和空格的位置是否影响编译器时间和/或运行时?

C++ 括号和空格的位置是否影响编译器时间和/或运行时?,c++,compilation,C++,Compilation,在查看其他人的代码时,我经常注意到块的括号位置存在差异 例如,有些人使用: int foo(){ ... } 而其他人则使用: int foo() { ... } 在这两者之间有很多方法。这是否会影响代码的编译速度?例如,如果我有一系列块,例如: int foo() { ... {... {... {... {...} } } } } int bar() { ... { ... { ...

在查看其他人的代码时,我经常注意到块的括号位置存在差异

例如,有些人使用:

int foo(){
    ...
}
而其他人则使用:

int foo()
{
    ...
}
在这两者之间有很多方法。这是否会影响代码的编译速度?例如,如果我有一系列块,例如:

int foo() { ... {... {... {... {...} } } } }

int bar()
{
    ...
    {
        ...
        {
            ...
            {
                ...
                {
                    ...
                }
            }
        }
     }
}
其中foo()和bar()除了空格和括号的位置外是相同的。编译这些函数需要不同的时间吗?一个在运行时会比另一个更快吗


如果将其扩展到几百或几千个嵌套块,这会有什么不同吗?此更改是否基于所使用的编译器?对于不同的语言,如C#、PHP、Perl等,它会改变吗

抱歉,如果这看起来像是很多一般性或开放性的问题,只是一些我一直感兴趣的问题


编译这些函数需要不同的时间吗?一个在运行时会比另一个更快吗?如果将其扩展到几百或几千个嵌套块,这会有什么不同吗?此更改是否基于所使用的编译器?对于不同的语言,如C#、PHP、Perl等,它会改变吗

不。不。不。不。不。事实上,所有sane编译器在词法分析阶段几乎都会立即去除空白。其他阶段甚至不知道有空白

唯一能让这一切有所不同的方法是有史以来编写的最糟糕的编译器,即使如此,我也会感到惊讶(同样如此规模的bug会让它变得如此糟糕,以至于完全无法使用)


编译这些函数需要不同的时间吗?一个在运行时会比另一个更快吗?如果将其扩展到几百或几千个嵌套块,这会有什么不同吗?此更改是否基于所使用的编译器?对于不同的语言,如C#、PHP、Perl等,它会改变吗

不。不。不。不。不。事实上,所有sane编译器在词法分析阶段几乎都会立即去除空白。其他阶段甚至不知道有空白


这唯一能起作用的方法是有史以来编写的最糟糕的编译器,即使如此,我也会感到惊讶(同样如此严重的错误会使它变得如此糟糕,以至于完全无法使用)。

编译器要做的第一件事就是去除空白、注释、,etc并将输入转换为一系列令牌

根据具体实施情况,整个过程与以下类似:




由于词法分析器将一系列标记传递给解析器,因此任何额外的空格、括号位置等都可能只会减慢词法分析阶段的速度。即使这样,除非有一个极端情况,比如GB的空白或类似的疯狂情况,否则差异也不会明显。

编译器要做的第一件事是去除空白、注释等,并将输入转换为一系列标记

根据具体实施情况,整个过程与以下类似:




由于词法分析器将一系列标记传递给解析器,因此任何额外的空格、括号位置等都可能只会减慢词法分析阶段的速度。即使这样,除非你有一个极端的例子,比如GB的空格或者类似的疯狂的东西,否则差别也不会明显。

一点也不会。(嗯,编译器必须读取整个文件,所以我想用大量的空格填充它会花费很长的时间来读取。但在运行时肯定没有任何区别。到那时,空格就完全消失了。)“如果将它扩展到几百或几千个嵌套块,这会有什么不同吗?”是的。你会被谋杀,你所有的同事都会神秘地声称什么也没看见。@R.MartinhoFernandes理论上,当然。任何一个真正做到这一点的人都会被抽签并四分五裂。如果这看起来很可笑,那就是荒谬。从循环的内部部分生成函数。看看是否有一个STL算法可以满足您的需要。除了使用n个嵌套循环之外,不要做任何事情;人们争论n的正确值,所以我将把它留给讨论。哦,而且绞刑总是先于画画和绞刑。这显然会影响我理解和维护代码所需的时间。一点也不会。(嗯,编译器必须读取整个文件,所以我想用大量的空格填充它会花费很长的时间来读取。但在运行时肯定没有任何区别。到那时,空格就完全消失了。)“如果将它扩展到几百或几千个嵌套块,这会有什么不同吗?”是的。你会被谋杀,你所有的同事都会神秘地声称什么也没看见。@R.MartinhoFernandes理论上,当然。任何一个真正做到这一点的人都会被抽签并四分五裂。如果这看起来很可笑,那就是荒谬。从循环的内部部分生成函数。看看是否有一个STL算法可以满足您的需要。除了使用n个嵌套循环之外,不要做任何事情;人们争论n的正确值,所以我将把它留给讨论。哦,挂起总是在画图和四行诗之前出现。这显然会影响我理解和维护代码所需的时间。看来我有很多关于编译器的知识需要学习。我期待着秋季的编译课。看来我还有很多关于编译器的知识要学。我期待着秋天的编译课。