3
なぜinstanceof
の呼び出しに時間がかかるのか分かりません。たとえば、次のようになぜinstanceof呼び出しの使用に時間がかかりますか?
if($this instanceof Player){
// Lags the server.
}
が、私は選手クラスでこれを追加する場合:
public function isPlayer(){
return true;
}
そして実行します。
if($this->isPlayer()){
//Super fast.
}
それははるかに高速です。だから、私がするときif ($this instanceof Player)
その時間中に実際に何をしているのですか?
実際には、is_a関数よりも高速です。この興味深い質問を見てください:http://stackoverflow.com/questions/3017684/what-is-the-difference-between-is-a--instanceof – nanocv
あなたの継承チェーンはどれくらい深く入れ子ですか?例えばもし '$ this'が20世代目のプレーヤー拡張であれば、チェーンをバックアップするのに時間がかかります。それが直接の '$ this players extends'世代の場合は –
興味深いですが、私はis_a()メソッドを使用していません。私は単にすべてのエンティティクラスisPlayer()に関数を入れ、それが真または偽であれば値を返し、次にこの関数を使ってinstanceof演算子を避けることができます。 – Callerap