IF,CASE和WHILE语句之间有什么区别

Jab*_*Jab 2 objective-c micro-optimization conditional-statements

我只是想知道objective-c中所有条件语句之间的区别是哪一个更快更轻.

Ned*_*der 13

一条建议:不要担心哪种语言结构在显微镜下比其他语言结构更快或更慢,而是专注于哪些语言结构让你最好地表达自己.

  • 我希望这听起来并不令人讨厌,但有人询问"if"和"while"之间的区别,不应该担心每个人的相对表现.很明显,我们并没有与微观优化嵌入式系统的人打交道.对于OP来说,考虑这些结构的性能还为时过早. (3认同)

Dre*_*ann 9

if和case语句描述

虽然声明描述

由于这些陈述做了不同的事情,辩论哪个更快是没有效果的.

这就像询问锤子是否比螺丝刀更快.


pax*_*blo 6

与语言无关的版本(大多数情况下,这显然不包括声明性语言或其他奇怪的版本):

被教授编程(很久以前,我会自由地承认),一种语言包括三种执行指令的方式:

  • 顺序(按顺序做事).
  • 选择(做很多事情之一).
  • 迭代(做零次或多次).

ifcase语句上选择这两个变种.If用于根据条件选择两个不同选项之一(使用伪代码):

if condition:
    do option 1
else:
    do option 2
Run Code Online (Sandbox Code Playgroud)

请记住,else可能不需要在哪种情况下有效else do nothing.还要记住,选项1或2也可以包含任何语句类型,包括更多if语句(称为嵌套).

Case 略有不同 - 它通常意味着两个以上的选择,比如当你想根据角色做不同的事情时:

select ch:
    case 'a','e','i','o','u':
        print "is a vowel"
    case 'y':
        print "never quite sure"
    default:
        print "is a consonant"
Run Code Online (Sandbox Code Playgroud)

请注意,您可以使用case两个选项(甚至一个),但这有点像用热核弹头杀死苍蝇.

While不是选择变体而是迭代变体.它属于与这样的人for,repeat,until和其他可能的主机.

至于哪一个最快,在绝大多数情况下并不重要.编译器编写者比我们的凡人更了解如何从代码中获得最后一点性能.你要么信任他们正确地完成他们的工作,要么你自己用汇编代码(我更喜欢前者).

通过专注于宏视图而不是次要事物,您将获得更多性能.这包括选择适当的算法,分析和定位热点.找到每月花费五分钟并在两分钟内完成运行的东西几乎没什么用.最好每分钟发生一些事情.

语言结构,如if,while,case等就已经以最快的速度,因为他们可以因为他们大量使用和是相对简单的.您应该首先编写代码以提高可读性,并且只在性能成为问题时担心性能(请参阅YAGNI).

即使您发现使用if/goto组合而不是case让您运行得更快,导致源代码的混乱也难以维持在轨道上.