オブジェクトをメソッドに渡す 2 つの異なる方法でベンチマークを実行しましたが、暗黙的なオブジェクトの受け渡しは、明示的な方法よりも時間がかかりませんでした。私の本によると、これらは同一のプロセスです。何が違いを説明していますか?
まず、クラス定義は次のとおりです。
class Point:
def reset(self)
self.x = 0
self.y = 0
したがって、次の 2 つのコード セットのそれぞれで「timeit」を実行すると、最初のコードはループあたり 317 ns を返し、2 番目はループあたり 400 ns を返します。以下は、オブジェクトとメソッドを渡す暗黙的なコードです。Python は、オブジェクトをバックグラウンドでメソッドに渡します。
p = Point()
p.reset()
そして、ここに明示的な代替手段があります:
p = Point()
Point.reset(p)
ベンチマークの違いを説明するメモリ割り当てレベルで何が起こっているのか誰か教えてもらえますか? ある方法は他の方法よりも「pythonic」ですか? プログラマーが (速度を超えて) どちらか一方を選択するのはなぜですか?
ありがとうございました、
マイケル