Логическая бомба непонимания или суперсложный массив
Здравствуйте, есть проблема оптимизации. Я делаю мультиплеерную игру на ноде+сокет. И столкнулся с проблемой, я делаю двумерный массив 80х80, состоящий из объектов, которые имеют несколько свойств, одно из которых - еще один объект с кучей свойств. И получается, что генерирую я вот так этот "суперсложный массив": :
for(var i =0; i<80;i++){ sectors[i] = []; for(var j =0; j<80;j++){ rand = Math.floor(Math.random() * (3 - 0) + 0); sectors[i][j] = settings.newSector(i,j,settings.land['ground_grass'+rand]); } } А на стороне клиента, прохожусь по "части" из них(всего 12х12 беру). И бешенно взлетает нагрузка на ЦП. Если закрыть вкладочку с игрой, и оставить серв включенным, то нагрузка пропадает. То есть можно сделать вывод, что обычное взятие из массив через [i][j] так сильно нагружает???Получается, что дело не в отрисовке на канвасе, а в вот этой вот операции for(var i =0; i<12;i++){ for(var j =0; j<12;j++){ var item = map.location.sectors[i][j]; var img = document.getElementById(item.ground.image_id); context.drawImage(img, -this.real_x + +this.x + item.len_x * item.cor_x, -this.real_y +this.y + item.len_y * item.cor_y - item.ground.fix_y, item.len_x+item.ground.fix_x, item.len_y+item.ground.fix_y); } } Выполнение вот этого второго куска кода По таймеру: если sectors 30х30, то от 0.26 ms до 0.56 ms. Если 60х60, то разброс увеличивается и иногда до 2ms доходит. Обновление игры происходит раз в 1000/60 ms |
насколько велик context ?
|
размером с экран юзера
|
Часовой пояс GMT +3, время: 12:32. |