2013-12-10 3 views
1

Мне нужно создать и сохранить сотни тысяч объектов для моего приложения. Я заметил в Chrome, что иногда, когда я загружаю страницу, для создания объектов потребуется больше времени, чем обычно, хотя я сделал 0 изменений кода. Затем, после создания объектов, страница будет работать медленнее, чем обычно; часто время, когда профилировщик ЦП будет говорить, что это GC или какая-то случайная функция, использующая большинство CPU. Как я уже сказал, иногда я обновляю страницу без каких-либо изменений кода, и я не увижу этого поведения. Оба идут рука об руку: если объекты создаются медленно по любой причине, страница WILL работает медленно и говорит, что это случайная функция или GC.Хром сбор мусора

В IE страница работает так, как я ожидал бы ее каждый раз.

Вы не можете ничего диагностировать, не видя тысячи строк кода, но есть ли у кого-нибудь идеи для меня? Почему Chrome проявил это поведение? Любые легкие хитрости, которые я мог бы попробовать? Благодаря!

+1

Может быть, это поможет вам http://stackoverflow.com/questions/18800440/javascript-and-garbage-collection/18913692#18913692 –

+2

Может быть эти две должности может помочь в этом конкретном вопросе. http://goo.gl/FfnOmn и http://goo.gl/G4HQr0. Вы также можете прочитать http://www.html5rocks.com/en/tutorials/performance/mystery/ –

+0

очень интересно. благодаря! – tau

ответ

1

Один простой совет - это. Я не уверен, если это применимо, не видя ваш код. Если вы создаете свои объекты, используя этот шаблон:

function Foo() { 
    this.func1 = function() { ... }; 
    this.func2 = function() { ... }; 
} 

и т.д., то вместо того, чтобы использовать этот шаблон:

function Foo() { 
} 
Foo.prototype.func1 = function() { ... }; 
Foo.prototype.func2 = function() { ... }; 

Последнее заканчивается время much, much faster. Я не уверен, что это эффективнее с точки зрения памяти, но, скорее всего.

+0

спасибо за подсказку! я должен был бы более ясно сказать, что объекты на самом деле являются картами или массивами; У меня относительно мало объектов из «классов». – tau