Jab*_*Jab 2 objective-c micro-optimization conditional-statements
我只是想知道objective-c中所有条件语句之间的区别是哪一个更快更轻.
Ned*_*der 13
一条建议:不要担心哪种语言结构在显微镜下比其他语言结构更快或更慢,而是专注于哪些语言结构让你最好地表达自己.
与语言无关的版本(大多数情况下,这显然不包括声明性语言或其他奇怪的版本):
当我被教授编程(很久以前,我会自由地承认),一种语言包括三种执行指令的方式:
该if和case语句上选择这两个变种.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让您运行得更快,导致源代码的混乱也难以维持在轨道上.
| 归档时间: |
|
| 查看次数: |
11897 次 |
| 最近记录: |