JavaScriptは、すべての()など、)機能フィルタ(中Object.keys()への呼び出しをキャッシュされていますか?

Tooster:

私は電話をキャッシュする場合には、パフォーマンスに影響を与えないObject.keys()repeteadlyそれのコンテンツの内部を検査する変数にはevery()filter()any()などの機能を?JSエンジンは、この場合には、インラインキャッシングを実行していますか?

X = {/*...*/};
t = [/*...*/];
f = key => {/*...*/}; // somehow transforms keys of X

// we want to check if all elements of t are the transformed keys of X
keys = Object.keys(X).map(f);
result = t.every(a=>keys.includes(a)); // <──────── is this faster than this ?
result = t.every(a=>Object.keys(X).map(f).includes(a)); // <──────────────┘

// same with filtering etc.
t = t.filter(a => !Object.keys(X).includes(a)); // discarding elements from t that are not keys in X

答えは私のコーディングの練習に影響を与えるだろう、私はむしろそれが1行のラムダで使用することができるので、第二、よりコンパクトなバージョンを使用して定義にジャンプせずに見やすくなりたいです。

先のとがりました:

あなたのコードは、業務時間の何千を実行しない限り、それは問題ではありません。しかし、(への関数呼び出しを行うObject.keys())し、常により多くのリソースを使用する新しい配列インスタンス化プロセスではないことをやって。

あなたのコードは、ほとんどすべての場合に最適に構成さよりも理解しやすく、保守であることがより重要です。

また、JavaScriptランタイム(S)の内部はずの最適化行動に依存しないように本当に良いアイデアです。それらは変更されることがあります。誰かがランタイムを維持することを単純に信頼することのOKは彼らのフルタイムの仕事としての性能を持っています。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=30880&siteId=1