Я пишу очереди приоритетов и octrees в подмножестве asm.js Javascript, чтобы выжать из них последнюю возможную производительность.
Однако как вы храните ссылки на объекты Javascript в буфере asm.js heap
?
Прямо сейчас, мои структуры в куче должны иметь целочисленный идентификатор для объекта Javascript, на который они ссылаются, и мне нужен классический объект Javascript, чтобы действовать как дик между этими ints и объектами Javascript.
Например, у меня есть asm.js octree, с помощью которого вы можете добавить функцию add, например add(x1,y1,z1,x2,y2,z2,object_id)
, где object_id
- целое число. Функция find(x1,y1,z1,x2,y2,z2)
возвращает список всех объектов-объектов, находящихся в пределах границ. Это означает, что я должен поддерживать словарь объектов для object_ids в Javascript, чтобы я мог определить фактические объекты, которые находятся в этом поле; отображение объектов-объектов в объекты.
Это кажется неправильным. Идея приведения int к строке для поиска в мире Javascript просто неверна. Одним из ключевых моментов написания внутрисетевых данных-структур в asm.js является предотвращение создания мусора.
(Я настроен на Chrome так же сильно, как Firefox, я надеюсь, что строгий код asm.js будет работать быстрее на обоих. Да, я буду профилировать.)
Независимо от того, сколько свойств вы можете внести в кучу asm.js - например, позицию и размеры объекта, вам обычно необходимо связать некоторые объекты Javascript с элементом; строками и объектами webGL и объектами DOM и т.д.
Есть ли лучший способ для кучи asm.js содержать указатели на объекты Javascript? А если использовать сопоставления целочисленного идентификатора, лучше ли использовать массивы или объекты-словари, например?