【发布时间】:2017-05-06 14:13:29
【问题描述】:
我最近不得不将整数的符号转换为 -1 或 1
我想知道,是通过 if else 语句还是通过计算更快?
#if else#
s == -1 ? -1 : 1
#calculation#
ceil((s + 1) / 2) * 2 - 1
我知道这是一个非常简单的示例,但有时您需要映射更大的间隔,而且直观地说,至少对于较小的间隔,数学运算似乎会更快。
另外,相对速度如何受所用语言的影响(例如 Python 与 C)。
【问题讨论】:
-
第二种解决方案不起作用。考虑如果
s是最大的正整数会发生什么,然后s+1溢出并且您有未定义的行为!因此,在可行的解决方案和不可行的解决方案之间,选择可行的解决方案。 -
我说的是映射范围 -1, 0, 1 到 -1, -1, 1(第一行),如果含糊不清,抱歉
-
@AsoneTuhid:如果我是你,我会将该映射添加到实际问题中。
标签: python c performance if-statement mapping