powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [закрыт для гостей] / переменные и память
18 сообщений из 18, страница 1 из 1
переменные и память
    #172990
Вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про работу с памятью что-то было новое внедрено в последних версиях
может кто разобрался получше - помогите.
в Сях можно расположить в одном месте памяти две переменные разных типов строку и интежер (к примеру)
можно ли такое сделать в java?
с использованием вставки байт-кода?
...
Рейтинг: 0 / 0
переменные и память
    #174583
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадя [игнорируется] 

Поскольку как трактовать то что лежит Union решает сам пользователь то непосредственно на уровне языка java из-за автоматической сборки мусора полноценного аналога union никогда не появиться. Вообще никогда. Ведь сборщику критично важно знать что же в коком-то филде конкретно лежит ссылка ли на другой объект(который дальше нужно просканировать) или просто long по поводу которого можно не париться.

На уровне же API как-то поизвращаться можно в ограниченных масшатбах. Самый простой способ создаешь массив байт и трактуешь его как хочешь, вместо массива байт можно использовать ByteBuffer, либо MemorySegments из Java17, в любом из трёх вариантов ты ограничен тем, что из байтиков ты ссылку на объект получить не можешь ибо нет арифметики указателей, да и указателей по сути тоже.
...
Рейтинг: 0 / 0
переменные и память
    #174759
Вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vimba [игнорируется] 
тогда вопрос (не в тему топика, но в тему моей проблемы, где частью был вопрос топика)
как ускорить HashMap? или чем его заменить?
HashMap<String, MyInterface> metaMap = new HashMap<>(10);
нужно в 3-4 раза ускорить
...
Рейтинг: 0 / 0
переменные и память
    #174895
asv_79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадя  05.10.2022, 21:34
[игнорируется]
vimba [игнорируется] 
тогда вопрос (не в тему топика, но в тему моей проблемы, где частью был вопрос топика)
как ускорить HashMap? или чем его заменить?
HashMap<String, MyInterface> metaMap = new HashMap<>(10);
нужно в 3-4 раза ускорить
switch case стейтмент попробуй
...
Рейтинг: 0 / 0
переменные и память
    #174940
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадя  05.10.2022, 21:34
[игнорируется]
vimba [игнорируется] 
тогда вопрос (не в тему топика, но в тему моей проблемы, где частью был вопрос топика)
как ускорить HashMap? нужно в 3-4 раза ускорить
Тот кто знает как ускорить HashMap в 3-4 раза может смело прямо сейчас открывать с ноги двери в офис оракла и класть им на стол своё резюме. Кстати интересно почему не в 10 или не в 2?
Вадя  05.10.2022, 21:34
[игнорируется]
или чем его заменить?
HashMap<String, MyInterface> metaMap = new HashMap<>(10);
Не обладая контекстом вам этого никто не скажет. Откуда мы знаем с какой целью вы в мапу что-то кладёте, а потом дастаёте, может если хорошенько разобраться её здесь можно заменить вообще ни на что, тобишь отрефакторить код, коллекцию вообще нафиг удалить и заменить на полиморфный вызов или в крайнем случае двойную диспетчеризацию, либо как писали выше на switch.
...
Изменено: 06.10.2022, 10:30 - vimba
Рейтинг: 0 / 0
переменные и память
    #174946
Вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vimba  06.10.2022, 10:25
[игнорируется]
Не обладая контекстом вам этого никто не скажет. Откуда мы знаем с какой целью вы в мапу что-то кладёте, а потом дастаёте.
пытаюсь ускорить рефлексию, и как оказалось - самое тонкое, самое медленное - это извлечение из мапы полного имени(ссылки) на метод по имени метода.
новые методы вызова метода по имени практически равны прямому "стандартному" вызову метода. разница в погрешности измерения.
а 3-4 - это за счет извлечения из мапы.
в 10 раз - это было б намного круче, но и 3-4 достаточно :)

кладётся в мапу один раз в синглтоне, при запуске, а потом только извлекается
...
Изменено: 06.10.2022, 10:43 - Вадя
Рейтинг: 0 / 0
переменные и память
    #174948
Вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv_79  06.10.2022, 09:06
[игнорируется]
switch case стейтмент попробуй
оно конеШно вариант, но когда у тебя вызовов 50++, а в ланах 300++, то switch case будет ещё дольше работать, да и каждый раз править его при добавлении/удалении методов - ни есть харашо
...
Рейтинг: 0 / 0
переменные и память
    #174950
Вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vimba  06.10.2022, 10:25
[игнорируется]
Тот кто знает как ускорить HashMap в 3-4 раза может смело прямо сейчас открывать с ноги двери в офис оракла и класть им на стол своё резюме.
может тут уже появились такие?
...
Рейтинг: 0 / 0
переменные и память
    #174964
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадя  06.10.2022, 10:37
[игнорируется]
vimba  06.10.2022, 10:25
[игнорируется]
Не обладая контекстом вам этого никто не скажет. Откуда мы знаем с какой целью вы в мапу что-то кладёте, а потом дастаёте.
пытаюсь ускорить рефлексию, и как оказалось - самое тонкое, самое медленное - это извлечение из мапы полного имени(ссылки) на метод по имени метода.
новые методы вызова метода по имени практически равны прямому "стандартному" вызову метода. разница в погрешности измерения.
а 3-4 - это за счет извлечения из мапы.
в 10 раз - это было б намного круче, но и 3-4 достаточно :)

кладётся в мапу один раз в синглтоне, при запуске, а потом только извлекается
Ну тогда вам нечем особенно заменить HashMap, поиск одного отдельно взятого элемента в ней быстрее чем в префиксном дереве и чем в TreeMap, а вы как раз только с поиском одного элемента и сталкиваетесь.

Но вот если сменить тип у константы которую вы сопоставляете каждому методу, а именно со String на int, то можно вместо HashMap<String, MyInterface> metaMap прийти к MyInterface[] metaArray, то есть каждая константа это индекс в массиве, тогда все серьезно ускориться.
...
Рейтинг: 0 / 0
переменные и память
    #175034
Вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vimba  06.10.2022, 11:22
[игнорируется]
Но вот если сменить тип у константы которую вы сопоставляете каждому методу, а именно со String на int, то можно вместо HashMap<String, MyInterface> metaMap прийти к MyInterface[] metaArray
была такая мысль, но тут возникают сложности с преобразованием входного параметра, который есть стринг, в int
в принципе HashMap<Integer, MyInterface> делает замедление только в 1.4 раза, вместо 4
но тогда возвращаемся к первому посту топика.
...
Рейтинг: 0 / 0
переменные и память
    #175036
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадя  06.10.2022, 12:25
[игнорируется]
была такая мысль, но тут возникают сложности с преобразованием входного параметра, который есть стринг,
Что он обозначает? Почему на его месте не может быть int?
...
Рейтинг: 0 / 0
переменные и память
    #175040
Вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vimba  06.10.2022, 12:29
[игнорируется]
Что он обозначает? Почему на его месте не может быть int?
потому что это принимаемый параметра и он стринг - имя метода который нужно вызвать.
из браузера приходит сообщение - команда и данные, где команда и есть имя метода.
конечно можно команду обозначить числом, но это уж слишком - нужно где-то держать связь число-имя_меетода...

ЗЫ
тут большой камень в сторону хибера - используют мапы и листы - тормозные вещи
...
Изменено: 06.10.2022, 12:38 - Вадя
Рейтинг: 0 / 0
переменные и память
    #175058
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадя  06.10.2022, 12:36
[игнорируется]
конечно можно команду обозначить числом, но это уж слишком - нужно где-то держать связь число-имя_меетода...
В жабоскрипте тоже можно иметь именованный константы.
...
Рейтинг: 0 / 0
переменные и память
    #175067
Вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vimba  06.10.2022, 12:50
[игнорируется]
В жабоскрипте тоже можно иметь именованный константы.
а при написании бэка - лазить и смотреть там?
с суммарном итоге это не вариант.
придётся смириться....
...
Рейтинг: 0 / 0
переменные и память
    #175074
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадя  06.10.2022, 13:09
[игнорируется]
а при написании бэка - лазить и смотреть там?
А тебе в любом случае нужно поддерживать согласованость констант на бэке и на фронте, являются константы строками или числами никакой принципиальной роли не имеет, две разные кодовые базы неизбежно ведут к двойной работе.
Вадя  06.10.2022, 13:09
[игнорируется]
придётся смириться....
Тоже вариант, если речь идёт про обработку HTTP запроса, то один поиск в мапе это ничто, это пыль, можно не париться.
...
Рейтинг: 0 / 0
переменные и память
    #175083
Вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vimba  06.10.2022, 13:18
[игнорируется]
А тебе в любом случае нужно поддерживать согласованость констант на бэке и на фронте,
это так, но без дополнительного слоя - имя и там и там одно и тоже- наглядно и просто
vimba  06.10.2022, 13:18
[игнорируется]
Тоже вариант, если речь идёт про обработку HTTP запроса, то один поиск в мапе это ничто, это пыль, можно не париться.
конечно, когда обращений мало, но когда очень много - надо экономить на мелочах,
может в будущем что-то ускорится...
ведь раньше и рефлексия считалась тормозом....
...
Рейтинг: 0 / 0
переменные и память
    #175095
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадя  06.10.2022, 13:28
[игнорируется]
конечно, когда обращений мало, но когда очень много - надо экономить на мелочах,
Если у тебя станет радикально много HTTP запросов, то всё сляжет не из-за того ты один раз на протяжении обработки одного HTTP запроса в мапе что-то поищешь.

Ежели взять абстрактного коня в вакууме в отрыве от бэкенда, то при проектировании системы констант, для ускорения поиска по константе их делают всегда числовми и ищут по смещению массиве. Если обратишь внимание к примеру на сериализацию в Hazelcast или Coherence, то там для пользовательских типов предусмотренны именно числовые константы.
...
Рейтинг: 0 / 0
переменные и память
    #175104
Вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vimba  06.10.2022, 13:37
[игнорируется]
Если у тебя станет радикально много HTTP запросов, то всё сляжет не из-за того ты один раз на протяжении обработки одного HTTP запроса в мапе что-то поищешь.
всегда найдётся тонкое место, но если их находить и исключать - можно добиться лучших результатов. [:smile]
vimba  06.10.2022, 13:37
[игнорируется]
при проектировании системы констант, для ускорения поиска по константе их делают всегда числовми и ищут по смещению массиве.
конечно это вариант, но более похож на велосипед. если есть возможность поискать лучше - почему - нет?
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Java [закрыт для гостей] / переменные и память
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]