いくつかのベースポイント:
- Pythonのメソッド呼び出しは、その解釈された性質により「高価」です。理論的には、コードが十分に単純な場合、Pythonコードの分解は、読みやすさと再利用に加えてマイナスの影響を及ぼします(これは、ユーザーにとってはそれほどではなく、開発者にとって大きな利益です)。
- 単一責任原則(SRP)は、コードを読み取り可能に保ち、テストと保守が容易です。
- プロジェクトには、読み取り可能なコード、テスト、および時間パフォーマンスが必要な特別な種類の背景があります。
たとえば、いくつかのメソッド(x4)を呼び出すこのようなコードは、次のメソッド(1つ)よりも低速です。
from operator import add
class Vector:
def __init__(self,list_of_3):
self.coordinates = list_of_3
def move(self,movement):
self.coordinates = list( map(add, self.coordinates, movement))
return self.coordinates
def revert(self):
self.coordinates = self.coordinates[::-1]
return self.coordinates
def get_coordinates(self):
return self.coordinates
## Operation with one vector
vec3 = Vector([1,2,3])
vec3.move([1,1,1])
vec3.revert()
vec3.get_coordinates()
これと比較して:
from operator import add
def move_and_revert_and_return(vector,movement):
return list( map(add, vector, movement) )[::-1]
move_and_revert_and_return([1,2,3],[1,1,1])
そのようなものを並列化する場合、パフォーマンスを失うのはかなり客観的です。これは単なる例です。私のプロジェクトには、数学などのミニルーチンがいくつかあります-作業はずっと簡単ですが、プロファイラーはそれを嫌っています。
固有の実装が直接影響するため、Pythonのパフォーマンスを損なうことなく、どのように、どこでSRPを採用しますか?
リリースのために物事をインラインにする何らかのプリプロセッサのような回避策はありますか?
それとも、Pythonはコードブレークダウンの処理だけでは不十分ですか?