私は今、pygameを使ってPythonで描画プログラムを作成しています。インターフェイスはvimesqueであると想定されており、ユーザーはキーを押してコマンドを入力するだけでほとんどのものを制御できます。ボタンのライブバインディングを許可したい。ユーザーは、どのキーコードがどの機能に対応するかを変更できる必要があります。私の現在の構造では、すべてのバインディングは、キーコードへの関数のディクショナリ「bindingsDict」に格納されています。メインループがKEY_DOWNイベントを受信するたびに、次のように実行します。bindingDictkeyCodeここで、keyCodeは整数として格納されます。これは機能しますが、時間がかかるようで、最適化する方法を考えるのに苦労しています。
dictルックアップの大きなO実行時間を知っている人はいますか?ハッシュ化されたため、ln(n)で実行されると想定しましたが、このソリューションとメインループ(動的バインディングを許可しない)にifステートメントのリストを書き込むだけではパフォーマンスに大きな違いがあります。
1 に答える
0
ユーザーイベントへの応答を辞書で検索しても、プログラムに目立った遅延が発生する可能性はほとんどありません。コードに問題があります。
ところで、Pythonでのdictとsetの検索はO(log(1))ですが、105個のキーの場合、または適用された修飾子を数えた場合でも、約1000個の異なるキーバインドを線形に検索できます(つまり、検索がO( N))5年前の(デスクトップ)CPUでも、目立った遅延はありません。
したがって、問題の解決策が必要な場合は、コードの一部を投稿してください。(私が気付いたコメントを読んで、あなたはすでに責任があると思われる何か他のものを見つけました)
于 2012-09-24T01:59:52.443 に答える