Skip to content
This repository has been archived by the owner on Mar 3, 2024. It is now read-only.

[IGNORE] #39

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
Open

[IGNORE] #39

wants to merge 10 commits into from

Conversation

podobaAlex
Copy link

  • Dao and Factory implementing.

if (to != null) {
innerMap = innerMap.headMap(to);
}
return innerMap.values().iterator();
Copy link

@coradead coradead Sep 26, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Лишняя аллокация в этом методе. ищи где

Copy link

@coradead coradead Sep 27, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А теперь очень сложные ифы (условно). Можно сделать в начале !=null && !=null. Но это вкусовщина, можешь забить.

Если исправил замечание - надо на коммент ответить в чем заключалась ошибка (чтобы я понял, правильно ли ты меня понял) и объяснить исправление.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Так как у нас два отдельных if, в которых создаётся новая map, то может быть случай, когда у нас выполняются два условия и будут две аллокации, а теперь только одна.


@Override
public int compare(MemorySegment o1, MemorySegment o2) {
return o1.asByteBuffer().compareTo(o2.asByteBuffer());
Copy link

@coradead coradead Sep 26, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Лишняя аллокация
  • смысл от того, что мы используем MemorySegment, если мы приводим к ByteBuffer
  • тут будет ошибка, если размер MemorySegment больше Integer.MAX_INT

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Теперь, сравниваются не байт буферы, а ищем элемент, с которого начинают различаться массивы байтов, и сравниваем элементы на этом месте, если размер какого-то массива равен нулю, то сравниваются размеры массивов.


@Override
public String toString(MemorySegment memorySegment) {
return new String(memorySegment.asByteBuffer().array(), StandardCharsets.UTF_8);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тоже, что и выше

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Поменял на чтение с heapBase, чтобы не было аллокации

Podoba Alexander and others added 4 commits September 26, 2023 19:04
- Fix Comparator using mismatch and Long.compare()
- Fix toString() using heapBase
if (o1.byteSize() != 0 && o2.byteSize() != 0) {
int diff = mismatch == -1
? 0
: o1.get(ValueLayout.JAVA_BYTE, mismatch) - o2.get(ValueLayout.JAVA_BYTE, mismatch);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

тоже сложный иф тоже вкусовщина


@Override
public String toString(MemorySegment memorySegment) {
return new String((byte[]) memorySegment.heapBase().orElseThrow(), StandardCharsets.UTF_8);
Copy link

@coradead coradead Sep 27, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ты не решил проблемы, ты все так же кастишь к массиву байт, это все тоже самое, что и раньше (прошлое замечание) + в дальнейшем там не всегда будет хип сегмент


@Override
public Iterator<Entry<MemorySegment>> get(MemorySegment from, MemorySegment to) {
ConcurrentNavigableMap<MemorySegment, Entry<MemorySegment>> innerMap = memorySegmentEntryMap;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

почему ты хранишь в начале ключ, а потом ентри, где тоже содержится ключ

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants