私はPythonでナイトのツアー問題に関する小さなゲームを書いています。別のコンピュータで同じPythonコードを実行するのはなぜ実行速度に大きな違いがありますか? (1000回以上)
ゲームのアルゴリズムの部分を終えたとき、私はそれが約8秒のチェスボードの成功したパスを見つけるために約0.01秒実行することがわかった。しかし、私のオフィスのコンピュータでそれを実行すると、同じパスを見つけるのに10秒以上かかります。それから3台のコンピュータで試したところ、結果は約0.005,6,8秒です。
5つのコンピュータで同じコードの実行速度に大きな違いがあるのはなぜですか?結果は0.005,0.010,6,8,10秒です。その差が1000倍を超えることがわかります。速度が6秒と8秒のコンピュータのハードウェアは、0.01秒と同じか、それより優れています。ハードウェアが速度に影響を与えるならば、約1000倍にはなりません。
私のコードを修正しました。最初のエディションに間違いがあります。私はPython 3.6を使用しています。テストは8 * 8サイズに変更されました。私は誤って忘れてしまいました。
以下はコードです。
import sys
import time
def init_path(size):
allow = []
for i in range(size):
for j in range(size):
allow.append([i, j])
return allow
def get_next_choice(step, hist, raws, allow):
num = 0
for raw in raws:
nextstep = [raw[i]+step[i] for i in range(2)]
if nextstep in allow and nextstep not in hist:
num += 1
return num
def search_next(size, pos, history, allow):
nextsteps = {}
raws = [[1,2], [1,-2], [2,1], [2,-1], [-1,2], [-1,-2], [-2,1], [-2,-1]]
if len(history) == size*size:
return True
for raw in raws:
nextstep = [raw[i]+pos[i] for i in range(2)]
if nextstep in allow and nextstep not in history:
next_choice = get_next_choice(nextstep, history, raws, allow)
nextsteps[next_choice] = nextstep
sorted(nextsteps.items())
for nextstep in nextsteps.values():
history.append(nextstep)
back = search_next(size, nextstep, history, allow)
if back:
return True
else:
history.pop()
else:
return False
def search_path(size, history):
allow = init_path(size)
position = history[-1]
back = search_next(size, position, history, allow)
if back:
return history
else:
return False
atime = time.time()
path = search_path(8, [[0,0]])
btime = time.time()
print(btime - atime)
時にはパスはFalseです。時にはそれがセルのリストです... –
同じpythonですか?同じラムですか?同じプロセッサですか?同じバックグラウンド活動ですか? –
@ReblochonMasqueコードをpyfiddle 3.6にコピー/ペーストしました。 - [0,0]を[[0,0]]に固定した後にエラーはありませんか? –