【发布时间】:2013-04-02 04:06:54
【问题描述】:
我发现了一些链接,它们谈论在 c++ 中的 switch case 比 if else 更快,因为它可以在编译中进行优化。然后我发现了一些人们认为使用字典可能比使用 If 语句更快的建议。然而,大部分对话都是关于某人的工作,最终只是讨论他们应该首先优化代码的其他部分,除非你做了数百万个 if else,否则这无关紧要。谁能解释这是为什么?
假设我有 100 个唯一数字,它们将不断地流入 Python 代码。我想检查它是哪个数字,然后执行一些操作。所以我可以做大量的 if else,或者我可以把每个数字放在字典里。为了争论起见,可以说它是一个单线程。
有人了解 python 和低级执行之间的层,可以解释它是如何工作的吗?
谢谢:)
【问题讨论】:
-
"我想检查它是哪个数字"这是什么意思?您可能必须对您的问题更加具体。 Python if 语句可能很慢,有一些方法可以通过保持 C 级工作来优化 python 代码,但是这是非常具体的,而且你的问题太宽泛了。
-
-
这么少的数字(0-100),如果你认为需要优化,那就做个表格,这样你就可以直接找到答案了。但是,您实际上是否首先尝试过“如果”或字典场景?也就是说...您是否有充分的理由相信超出上述任何一项的优化是必要的?
-
如果你“线性”排列 if 语句(即没有嵌套),它应该具有线性时间复杂度,而 dict 通常具有 O(log n) 时间复杂度。
-
@AndreHolzner 你到底为什么说字典有 O(log n) 复杂度?
标签: python if-statement dictionary switch-statement