0

我现在正在用 pygame 在 python 中制作一个绘图程序。该界面应该是 vimesque,允许用户通过按键和输入命令来控制大多数事情。我想允许按钮的实时绑定;用户应该能够更改哪个键码对应于哪个功能。在我当前的结构中,所有绑定都存储在键码函数字典“bindingsDict”中。每当主循环接收到 KEY_DOWN 事件时,我都会执行: bindingDictkeyCode 其中 keyCode 存储为整数。这行得通,但似乎要花很多时间,而且我在思考可以优化的方法时遇到了麻烦。
有谁知道 dict 查找的大 O 运行时间?我假设因为它散列了它会在 ln(n) 中运行,但是这个解决方案和只在 mainloop 中编写 if 语句列表(不允许动态绑定)在性能上存在巨大差异。

4

1 回答 1

0

字典搜索对用户事件的响应不太可能导致程序出现任何明显的延迟。你的代码有问题。

顺便说一句,Python 中的 dict 和 set 搜索是 O(log(1)) - 但是对于 105 个键,或者甚至,如果计算应用的修饰符,可以线性搜索大约 1000 个不同的键绑定(也就是说,如果搜索是 O( N) ) 没有明显的延迟,即使在 5 年的(台式机)CPU 上也是如此。

因此,如果您想为您的问题提供解决方案,只需发布​​一些代码。(阅读评论我注意到你发现了其他似乎已经负责的东西)

于 2012-09-24T01:59:52.443 回答