パフォーマンスをもたらすスパイスを追加します。このスレッドを確認してください
https://github.com/googleapis/google-api-nodejs-client/issues/375
delete演算子を使用すると、V8の隠しクラスパターンのパフォーマンスが低下します。一般に、使用しないことをお勧めします。
あるいは、オブジェクト自身の列挙可能なプロパティを削除するために、それらのプロパティなしで新しいオブジェクトのコピーを作成できます(lodashを使用した例):
_.omit(o、 'prop'、 'prop2')
または、プロパティ値をnullまたは未定義に定義することもできます(JSONへのシリアル化時に暗黙的に無視されます)。
o.prop = undefined
あなたも破壊的な方法を使うことができます
const {remov1, remov2, ...new} = old;
old = new;
そしてより実用的な例:
this._volumes[this._minCandle] = undefined;
{
const {[this._minCandle]: remove, ...rest} = this._volumes;
this._volumes = rest;
}
ご覧の[somePropsVarForDynamicName]: scopeVarName
とおり、動的な名前の構文を使用できます。そして、すべてをブラケット(新しいブロック)に入れることができるので、残りはその後にガベージコレクションされます。
ここでテスト:
exec:
または、次のような関数を使用することもできます
function deleteProps(obj, props) {
if (!Array.isArray(props)) props = [props];
return Object.keys(obj).reduce((newObj, prop) => {
if (!props.includes(prop)) {
newObj[prop] = obj[prop];
}
return newObj;
}, {});
}
タイプスクリプト用
function deleteProps(obj: Object, props: string[]) {
if (!Array.isArray(props)) props = [props];
return Object.keys(obj).reduce((newObj, prop) => {
if (!props.includes(prop)) {
newObj[prop] = obj[prop];
}
return newObj;
}, {});
}
使用法:
let a = {propH: 'hi', propB: 'bye', propO: 'ok'};
a = deleteProps(a, 'propB');
// or
a = deleteProps(a, ['propB', 'propO']);
このようにして、新しいオブジェクトが作成されます。また、オブジェクトの高速プロパティが保持されます。どちらが重要であるか、問題になる可能性があります。マッピングとオブジェクトに何度もアクセスする場合。
また、関連付けるのundefined
も良い方法です。あなたがそれを買う余裕があるとき。キーについては、値を確認することもできます。たとえば、すべてのアクティブなキーを取得するには、次のようにします。
const allActiveKeys = Object.keys(myObj).filter(k => myObj[k] !== undefined);
//or
const allActiveKeys = Object.keys(myObj).filter(k => myObj[k]); // if any false evaluated value is to be stripped.
未定義は大きなリストには適していません。または、多くの小道具が登場する時間の経過に伴う開発。メモリ使用量は増加し続け、クリーンアップされないため。したがって、使用方法によって異なります。そして、新しいオブジェクトを作成するだけでも良い方法のようです。
次に、Premature optimization is the root of all evil
キックインします。したがって、トレードオフに注意する必要があります。そして必要なものと不要なもの。
lodashの_.omit()に関する注意
バージョン5から削除されました。リポジトリで見つけることができません。そして、ここでそれについて話す問題。
https://github.com/lodash/lodash/issues/2930
v8
あなたはこれを読むのに良いこれをチェックできますhttps://v8.dev/blog/fast-properties