0

渡された引数に基づいて一意の ID を作成するために、この小さな関数を少し前に書きました。私の質問は、それを解決するためのより良い(パフォーマンス)方法があるかどうかです。

function id_make(/* POLYMORPHIC */)
{
    return md5(serialize(func_get_args()));
}

echo id_make(__FILE__, 'something', ['item' => 'some_content']);
4

3 に答える 3

1

与えられた関数シグネチャについては、改善することはあまりありません.3つのチェーンされた関数呼び出しが連続して実行されるため、最適化または削除するものは何もありません。

3 つの関数呼び出しが多かれ少なかれ内部でコンパイルされたネイティブ機能に要約されることを考えると、衝突の可能性を作成せずに同じレベルの柔軟性を提供する代替アプローチは考えられません。

いいえ、この関数でここで改善することは何もありません。この種の柔軟なハッシュが必要な場合、外部コードはおそらくいくつかの最適化を使用できます。

于 2013-05-27T15:07:17.643 に答える
1

かなり大きなオブジェクトを引数として渡そうとすると、パフォーマンスの問題が発生すると思いますか?

スクリプトの目的はわかりませんが、これが役立つかもしれません。おそらく、引数をループする必要があり、それがオブジェクトの場合は、それをハッシュに置き換えることができます。参照: http://php.net/manual/en/function.spl-object-hash.php

しかし、目的がわからないと言ったので、オブジェクトが破棄されたときに同じハッシュが再利用される可能性があることに注意してください。

于 2013-05-27T15:11:12.290 に答える