我最近为一家使用C(和C ++)编写自己语言的公司进行了代码测试。我对他们发给我的没有括号的代码中的所有if语句感到有些震惊。最初我只是认为他们是黑客,但后来我想知道他们是否这样做,因为它实际上(最低限度)更快。此外,如果有人看到最近导致security breach in iOS的原因的代码,你会注意到大括号会阻止这个bug。他们也在为速度写作吗?
这个问题对任何C(语法)类型语言都是开放的,因为我想可能存在一些差异。
答案 0 :(得分:4)
大括号与编译语言的速度无关。
如果它是可选的,它只是一种风格偏好,虽然有较高的错误可能性(例如Apple的失礼)。
所有这些语言都已编译完成。大括号本身不是任何类型的指令,它只是一个更高级别的语法元素,用于告诉编译器一组语句形成某种连贯的块。 (在许多语言中它是一个大括号的事实可能更多的是传统问题而不是其他任何东西。)它在精神上与分号,括号,冒号等相似。它只不过是用来帮助你的语法符号。准确地向编译器表达您的程序。
据我所知,没有处理器或虚拟机具有等效的fyi_curly_brace_was_here
指令。
这个问题类似于询问白色空格或额外的分号是否会影响编译语言的性能 - 这些都是可选的格式或必要的语法元素。
我们提到“编译”语言的原因是某些解释型语言,其中代码在执行时被解析,可能会因为解析而产生适度的速度惩罚,但即使在这些类型的语言中,效果也会与代码本身正在做的其他事情相比,可能完全可以忽略不计。
答案 1 :(得分:3)
在C或C ++等编译语言中,括号的存在或不存在不能使实际程序更快。
我的猜测:他们只是在没有它们的情况下更快地攻击它。
答案 2 :(得分:2)
没有。编译后的代码将是相同的。