如果我在很长的列表上继续调用len(),那是我在浪费时间,还是在后台保持int计数?
Answers:
不用担心:当然,它可以节省计数,因此len()在列表中是一项非常便宜的操作。顺便说一句,字符串,字典和集合也是如此!
找出完成方式的另一种方法是 在Google Code Search上查找 如果您不想自己下载源代码,请查看GitHub上的源代码。
static Py_ssize_t list_length(PyListObject *a)
{
return a->ob_size;
}
编写程序,以便对其进行优化以使其清晰易维护。致电可以使您的程序更清晰len(foo)吗?然后做。
您担心花费的时间吗?使用timeit标准库中的模块来衡量所花费的时间,并查看它在代码中是否有意义。
就像大多数人一样,您在猜测程序的哪些部分最慢时很可能是错误的。避免猜测的诱惑,而要通过测量找出答案。
请记住,用唐纳德·克努斯(Donald Knuth)的话说,过早的优化是万恶之源。仅关注测量速度的代码速度,以了解该好处是否值得更改其工作方式的成本。