Skip to content

Speed optimization of Organisms._onAfterMove() method #33

@tmptrash

Description

@tmptrash

Выглядит так, что этот метод съедает существенную часть скорости CPU во время работы системы. Все из за этих двух строк:

    delete this._positions[Helper.posId(x1, y1)];
    this._positions[Helper.posId(x2, y2)] = org;

Проблема в том, что мы постоянно добавляем и удаляем ключи. Нужно придумать чем заменить работу с хеш мапой. Было бы неплохо использовать массив фиксированной длины, если это возможно. Но по сути, его размер будет такой же, как и размер мира в точках. Исходя из этого вторая идея - использовать сам мир, как этот массив. Для этого нужно проверить не будет ли медленным хранить в массиве мира ссылки на организмы, либо значения энергии. Так же, нужно учесть тот факт, что мир можно оптимизировать используя типизированные массивы типа UInt32Array. Нужно так же проверить будут ли они быстрее обычного массива, который используется сейчас.

Metadata

Metadata

Assignees

Labels

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions