HashMaps достаточно быстро?

1

Im строит мою собственную небольшую библиотеку Opengl, основанную на Lwjgl. В тот момент, когда я использую HashMaps для хранения таких вещей, как объекты рендеринга, scens или шейдерные программы, потому что я хочу иметь на классе, который пользователь может видеть, и там создаются методы для изменения, создания, я не знаю... других объектов или классов, которые защищены. Итак, чтобы объяснить это:

Существует класс под названием "ShaderProgram". Но вместо этого разрешить пользователю создавать один, с ShaderProgram s = новый ShaderProgram (...); , я создаю метод в своем "основном классе", называемом "createShaderProgram", присваиваю ему параметры, создаю шейдерную программу и помещаю ее в hashMap, называемую shaderPrograms, с именем, которое пользователь решает. например, с помощью MyClass.createShaderProgram("particle_shader",...) я могу создать шейдер для своих частиц, а затем с MyClass.binShaderProgram("particle_shader") или что-то вроде этого, я могу его использовать.

НО: Это достаточно быстро? Или есть другие причины, чтобы изменить его на индексы int или полностью разрешить пользователю использовать все классы? Потому что, например, я создаю такие объекты рендеринга, как это, и в каждом кадре для создания MyClass.getRenderObject("ACube"). Move (...)... могу ли я это сделать? Что Вы думаете об этом?

Теги:
performance
opengl
lwjgl
hashmap

1 ответ

2

Время сложности доступа для хеш-таблицы - это O (n) в худшем случае: временная сложность методов HashMap

Поэтому да, я бы сказал, что если производительность доступа к вашим коллекциям объектов настолько важна, вы должны использовать индексированные коллекции 1:1, такие как массивы.

  • 1
    хорошо, спасибо. Я посмотрю, как это сделать.
  • 1
    Вы имеете в виду лучший случай O (1). В худшем случае это O (n) (хеш всех записей в одном и том же сегменте)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню