全く同じことをする2つの関数はありますが、count()
メソッドを使用するメソッドが他のメソッドよりもはるかに高速である理由は誰にも分かりますか? (??私は、それが構築されてどのように動作しない方法を意味する)count()メソッドがforループのpythonよりも高速な理由
可能ならば、私はここで見つかったものよりも理解しやすい答えが欲しい:Algorithm used to implement the Python str.count function または何のソースコードにあります:https://hg.python.org/cpython/file/tip/Objects/stringlib/fastsearch.h
def scoring1(seq):
score = 0
for i in range(len(seq)):
if seq[i] == '0':
score += 1
return score
def scoring2(seq):
score = 0
score = seq.count('0')
return score
seq = 'AATTGGCCGGGGAG0CTTC0CTCC000TTTCCCCGGAAA'
# takes 1min15 when applied to 100 sequences larger than 100 000 characters
score1 = scoring1(seq)
# takes 10 sec when applied to 100 sequences larger than 100 000 characters
score2 = scoring2(seq)
返信いただきありがとうございます
Pythonがリリースされて以来、本当に賢い人たちが 'count()'のような関数を組み込んで最適化してきたからです。 –
どのコンピュータでこれを試しましたか?私の方があなたよりも100〜200倍速く見えます。また、索引付けされていないループはなぜですか?あなたは**それをゆっくりとしようとしていましたか? –
[Python str.count関数を実装するために使用されるアルゴリズム](http://stackoverflow.com/questions/16806972/algorithm-used-to-implement-the-python-str-count-function) –