JavaScript 게임을 개발 중이며 가능한 한 메모리 사용량을 줄이고 싶습니다. 따라서 일부 객체를 다시 null로 설정하여 가비지 수집을 할 수 있습니다. article은 새로운 메모리를 할당하는 새로운 배열을 만들기 때문에 Array.splice()
과 같은 기능을 사용하지 않는 것이 좋습니다.splice()없이 배열의 요소를 제거하십시오.
그래서 특정 인덱스에서 요소를 삭제하고 뒤에 모든 요소를 이동하므로 길이가 length -= 1
으로 설정되므로 자체 기능으로 JSFiddle을 구현했습니다. 대신 스플 라이스의 사용
기능 :이는 대신 새로운 하나를 만드는 기존의 배열에 영향을 미치는 내 기능
deleteElem = function(arr, el) {
var index = arr.indexOf(el);
if (index > -1) {
var len = arr.length - 1;
for (var i = index; i < len; i++) {
arr[i] = arr[i + 1];
}
arr.length = len;
}
}
JSFiddle 때로는 빠르게 때로는 느리게 ... 나는 더 많은 돈을 지불해야 더 나은 성능과 나쁜 메모리, 더 나은 메모리와 더 나쁜 성능에 대한 관심?
Array.splice
을 사용하지 않으려면 다른 방법이 있습니까?
자주 항목을 추가/제거하려면 배열 대신 사전을 사용 해본 적이 있습니까? – Oleg
글쎄, 나는 스플 라이스에 대해 몰랐다. – axelduch
문제가 있다는 것을 알기 전까지는 최적화하지 마십시오. 틀림없이 평평한 메모리 사용은 좋은 이상이지만, 자바 스크립트의 디자인은 점차적 인 톱니가 거의 확실하다는 점에서 그 반대 다. 트리거하는 GC로 인해 실제와 같이 인식 가능한 문제가 발생하면이를 조정하십시오 (그 시점까지 벤치 마크에 대한 전체 프로그램을 제공하므로 실제 데이터를 가지고이를 결정할 수 있습니다) – Dave