在python中str()和int()是否耗时?
我面对自己使用了很多这样的结构:在python中str()和int()是否耗时?,python,performance,Python,Performance,我面对自己使用了很多这样的结构: for node in range(int(self.num_nodes)): dists[str(node)] = -1 所以,我的问题是:例如,当调用str()或int()时,python(3+)使用什么?它只是投射?它会改变信仰吗?(还有别的吗?) 你如何建议我写这种代码?请记住,dist的键必须是str,num_nodes也是str,str和int的价格完全取决于传递给它们的对象。最终,它们只调用对象的和钩子方法。对于大多数简单对象,这些操作应
for node in range(int(self.num_nodes)):
dists[str(node)] = -1
所以,我的问题是:例如,当调用str()
或int()
时,python(3+)使用什么?它只是投射?它会改变信仰吗?(还有别的吗?)
你如何建议我写这种代码?请记住,dist的键必须是
str
,num_nodes
也是str
,str
和int
的价格完全取决于传递给它们的对象。最终,它们只调用对象的和钩子方法。对于大多数简单对象,这些操作应该非常快。e、 g.将一个简单字符串转换为整数需要我的计算机大约0.5微秒:
$python -mtimeit -s 'x="1"' 'int(x)'
1000000 loops, best of 3: 0.479 usec per loop
$ python -mtimeit -s 'x=1' 'str(x)'
10000000 loops, best of 3: 0.12 usec per loop
反向操作只需略多于0.1微秒:
$python -mtimeit -s 'x="1"' 'int(x)'
1000000 loops, best of 3: 0.479 usec per loop
$ python -mtimeit -s 'x=1' 'str(x)'
10000000 loops, best of 3: 0.12 usec per loop
然而,创建病理对象非常容易,这将非常昂贵
import time
class Argv(object):
def __str__(self):
time.sleep(1000)
return 'ha ha ha!'
str
和int
的价格完全取决于传递给它们的对象。最终,它们只调用对象的和钩子方法。对于大多数简单对象,这些操作应该非常快。e、 g.将一个简单字符串转换为整数需要我的计算机大约0.5微秒:
$python -mtimeit -s 'x="1"' 'int(x)'
1000000 loops, best of 3: 0.479 usec per loop
$ python -mtimeit -s 'x=1' 'str(x)'
10000000 loops, best of 3: 0.12 usec per loop
反向操作只需略多于0.1微秒:
$python -mtimeit -s 'x="1"' 'int(x)'
1000000 loops, best of 3: 0.479 usec per loop
$ python -mtimeit -s 'x=1' 'str(x)'
10000000 loops, best of 3: 0.12 usec per loop
然而,创建病理对象非常容易,这将非常昂贵
import time
class Argv(object):
def __str__(self):
time.sleep(1000)
return 'ha ha ha!'
dists=[-1]*int(self.num\u节点)
可能会更好。有没有理由需要一个dict,它的键只是整数的字符串表示形式?dists=[-1]*int(self.num\u节点)
可能会更好。您需要一个dict的原因是什么?它的键只是整数的字符串表示形式。谢谢您提供的示例:谢谢你的例子D