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的正确值,所以我将把它留给讨论。哦,挂起总是在画图和四行诗之前出现。这显然会影响我理解和维护代码所需的时间。看来我有很多关于编译器的知识需要学习。我期待着秋季的编译课。看来我还有很多关于编译器的知识要学。我期待着秋天的编译课。