Python dict作为决策树的性能问题

Python dict作为决策树的性能问题,python,performance,dictionary,Python,Performance,Dictionary,我这里有一个性能问题,我想我不知道该怎么称呼它,但它有一个决策树一样的外观 这个程序应该在短时间内处理相当多的数据。根据数据,程序应确定要设置的操作。大多数情况下,它是有效的。但有时并非所有的数据都没有经过处理,而是使用相同的数据进行测试,我从外部程序中以字符串的形式获得OSC消息,间隔大约为1ms,可能更短。PythonOSC会稍微处理它们,然后将其发送到此函数: nextAction = { "nextAction1": doSomethingElseA, "nextAction

我这里有一个性能问题,我想我不知道该怎么称呼它,但它有一个决策树一样的外观

这个程序应该在短时间内处理相当多的数据。根据数据,程序应确定要设置的操作。大多数情况下,它是有效的。但有时并非所有的数据都没有经过处理,而是使用相同的数据进行测试,我从外部程序中以字符串的形式获得OSC消息,间隔大约为1ms,可能更短。PythonOSC会稍微处理它们,然后将其发送到此函数:

nextAction = {
   "nextAction1": doSomethingElseA,
   "nextAction2": dosomethingElseB,
   "nextAction3": nextActionA
}

action = {
   "action1": doSomethingA,
   "action2": dosomethingB,
   "action3": nextAction
}

def check(address, value):

   keywords = address.split('/')

   try:
       if len(keywords) == 2:
           action[keywords[1]](value)

       if len(keywords) == 4:
           action[keywords[1]][keywords[3]](int(keywords[2]), value)

   except KeyError:
       pass
会有超过4个单词的案例,也可能是1-2个以上。这里的地址类似于x/address/2/并且一个值是一个浮点值


是否有更好的方法来处理这些数据,以确定要设置的操作?性能方面。

您的操作字典不显示嵌套字典。字典查找需要固定的时间,所以您不太可能在那里找到进一步的改进。你是如何衡量业绩的?这里的函数调用有多快/慢?cProfile或hotshot模块将允许您分析代码,以确定时间的使用位置。@MartijnPieters它在dict action中确实看到了。。nextAction是嵌入式的。我用现在的时间做了。结果总是小于1ms。也许我需要一种更好的性能测量技术。@thebjorn我会研究它们的,谢谢@汤姆:啊,是的,错过了。尽管如此,您仍有两个O1查找,我们在这方面没有任何改进。