对于非字符串搜索,简单地使用str.find / rfind是否比使用re.match / search更快?
也就是说,对于给定的字符串s,我应该使用:
if s.find('lookforme') > -1:
do something
要么
if re.match('lookforme',s):
do something else
?
问题:使用最好回答更快timeit
。
from timeit import timeit
import re
def find(string, text):
if string.find(text) > -1:
pass
def re_find(string, text):
if re.match(text, string):
pass
def best_find(string, text):
if text in string:
pass
print timeit("find(string, text)", "from __main__ import find; string='lookforme'; text='look'")
print timeit("re_find(string, text)", "from __main__ import re_find; string='lookforme'; text='look'")
print timeit("best_find(string, text)", "from __main__ import best_find; string='lookforme'; text='look'")
输出为:
0.441393852234
2.12302494049
0.251421928406
因此,不仅应该使用in
运算符,因为它更易于阅读,而且因为它也更快。
问题内容: 我目前正在决定要在其上构建科学计算产品的平台,并且正在决定在Core2 Quad CPU上使用C#,Java或带有Intel编译器的纯C语言。它主要是整数运算。 到目前为止,我的基准测试表明Java和C彼此差不多,并且.NET / C#落后大约5%,但是我的许多同事都声称经过适当的优化的.NET将在足够的时间上击败这两个方面。供JIT开展工作。 我一直以为JIT会在应用启动后的几分钟内
问题内容: 这个问题对我来说只是个问题,因为我一直喜欢编写优化的代码,这些代码也可以在廉价的慢速服务器(或具有大量流量的服务器)上运行 我环顾四周,却找不到答案。我想知道在这两个示例之间有什么更快的方法,请牢记在我的案例中数组的键并不重要(自然是伪代码): 因为问题的关键不是数组冲突,所以我想补充一点,如果您担心冲突的插入,可以使用。它仍然可能导致冲突,但是当从用户提供的文件中读取时,它可以避免可
哪个效率更高,占用内存更少,循环速度更快,为什么? 案例1: 案例2: 谢谢
Python的http.server(或Python 2的SimpleHTTPServer)是从命令行提供当前目录内容的一种很好的方式:
我想知道>是否比>=更快?我试着对其进行基准测试,但要么需要0ms,要么需要永远。我知道差别会很小,但我必须在很多像素上操作。有人能告诉我什么更快吗?
问题内容: Bloch中的方法同时使用和复制一个数组。 如何比较这两种复制方法,何时应使用哪种复制方法? 问题答案: 同之处在于不仅复制元素,还创建新的数组。复制到现有阵列中。 这是的来源f,你可以看到它在内部用于填充新数组:
问题内容: search()和Python 模块中的match()函数和有什么区别?re 我已经阅读了文档(当前文档),但是我似乎从未记得它。我一直在查找并重新学习它。我希望有人会用示例清楚地回答它,以便(也许)它会贴在我的头上。或者至少我将有一个更好的地方来回答我的问题,并且重新学习它所花的时间会更少。 问题答案: 锚定在字符串的开头。这与换行无关,因此它与在模式中使用的方式不同。 如重新匹配文
据我所知,synchronized关键字将本地线程缓存与主存同步。volatile关键字基本上总是在每次访问时从主存中读取变量。当然,访问主存比本地线程缓存要昂贵得多,因此这些操作也很昂贵。然而,CAS操作使用低级硬件操作,但仍然必须访问主存。那么CAS操作如何更快呢?