The quest for the fastest linked list - Johnny's Software Lab
https://johnnysswlab.com/the-quest-for-the-fastest-linked-list/
Читаю статью про оптимизации связных списков и понимаю, что в целом-то всё супер логично и понятно, и что я раньше сильно заблуждался касательно них.
Например, я помнил всегда, что связный список, это структура данных, которая содержит элементы разбросанные в памяти (в куче) совершенно случайным образом. Иными словами, из-за этого работают они медленно, т.к. CPU не может схитрить и подрузить следующие элементы, т.к. ... банально не знает где они могут находится.
В статье предлагается, в целом-то, супер очевидное решение: "а давайте располагать элементы списка по порядку в памяти, при помощи кастомного аллокатора памяти, который нам это обеспечит".
Прочитав это предложение, я замер, т.к. сразу словил несколько флешбеков из давних собеседований, еще в бытность плюсовиком, где говорил: юзать связные списки это медленно, нужно этого избегать. Мне говорили, да-да, так и есть. Но как это исправить? И я говорил никак, сходу никак. И мне как-то попался один ревьювер, который добавил: а почему тогда в ядре Linux так много используются односвязные списки, если они такие медленные? Это меня поставило в тупик, но ответить было нечего.
Сейчас бы думаю, с учётом этот статьи что-то бы и сообразил.
—
В целом, это напоминает разные мыслительные игры, которые помогают находить простые решения, сложных проблем, ведь часто, всё лежит на поверхности, просто мы смотрим на неё под углом и не замечаем.
—
В статье также дальше описываются интересные оптимизации, которые могут пригодится нативным разработчикам, но и в целом интересно может быть остальным. Советую!
https://johnnysswlab.com/the-quest-for-the-fastest-linked-list/
Читаю статью про оптимизации связных списков и понимаю, что в целом-то всё супер логично и понятно, и что я раньше сильно заблуждался касательно них.
Например, я помнил всегда, что связный список, это структура данных, которая содержит элементы разбросанные в памяти (в куче) совершенно случайным образом. Иными словами, из-за этого работают они медленно, т.к. CPU не может схитрить и подрузить следующие элементы, т.к. ... банально не знает где они могут находится.
В статье предлагается, в целом-то, супер очевидное решение: "а давайте располагать элементы списка по порядку в памяти, при помощи кастомного аллокатора памяти, который нам это обеспечит".
Прочитав это предложение, я замер, т.к. сразу словил несколько флешбеков из давних собеседований, еще в бытность плюсовиком, где говорил: юзать связные списки это медленно, нужно этого избегать. Мне говорили, да-да, так и есть. Но как это исправить? И я говорил никак, сходу никак. И мне как-то попался один ревьювер, который добавил: а почему тогда в ядре Linux так много используются односвязные списки, если они такие медленные? Это меня поставило в тупик, но ответить было нечего.
Сейчас бы думаю, с учётом этот статьи что-то бы и сообразил.
—
В целом, это напоминает разные мыслительные игры, которые помогают находить простые решения, сложных проблем, ведь часто, всё лежит на поверхности, просто мы смотрим на неё под углом и не замечаем.
—
В статье также дальше описываются интересные оптимизации, которые могут пригодится нативным разработчикам, но и в целом интересно может быть остальным. Советую!
Johnny's Software Lab
The quest for the fastest linked list - Johnny's Software Lab
Linked lists are celebrity data structures of software development. They are celebrities because every engineer has had something to do with them in one part of their career. They are used in many places: from low-level memory management in operating systems…
🔥2
сижу смеюсь как дурак.
еще бы, поздно начать и закончить к 22, потом и не такое смешно
еще бы, поздно начать и закончить к 22, потом и не такое смешно
😁3
Зафиксируем этот момент — AI бот в GitHub issue прокомментировал баг и, на удивление, это решение проблемы (или хотя бы workaround)
[BUG] Cannot build Dockerfile.jupyter · Issue #825 · jupyter-incubator/sparkmagic
https://github.com/jupyter-incubator/sparkmagic/issues/825
[BUG] Cannot build Dockerfile.jupyter · Issue #825 · jupyter-incubator/sparkmagic
https://github.com/jupyter-incubator/sparkmagic/issues/825
GitHub
[BUG] Cannot build Dockerfile.jupyter · Issue #825 · jupyter-incubator/sparkmagic
Describe the bug Building Dockerfile.jupyter fails with the following error: => ERROR [14/19] RUN jupyter nbextension enable --py --sys-prefix widgetsnbextension 0.4s ------ > [14/19] RUN jup...
❤2
Предварительный опрос: кому интересно поиграть в Helldivers 2 по сети?
Платформы: PS5/Steam (PC)
Количество сессий в неделю: 1-2, по 2-3 часа
Платформы: PS5/Steam (PC)
Количество сессий в неделю: 1-2, по 2-3 часа
😱1
Forwarded from gavr_sas
YouTube
Consol3 - Voxel Ray Marching
Consol3 now supports voxel ray marching as an alternative rendering technique along side the existing rasterization pipeline
To showcase this, I created a small physics simulation demo where different elements can be spawned
Github link: https://github…
To showcase this, I created a small physics simulation demo where different elements can be spawned
Github link: https://github…
🔥2
Forwarded from Українська Rust Спільнота (Kostyantyn Wandalen)
Білий Дім закликає відмовлятись від C та C++ та переходити на безпечніші мови, як Rust
У новому звіті Офісу Нац. Директора з питань Кібербезпеки Білого Дому акцентується на необхідності відмовитися від використання C і C++ через їхні вразливості в кібербезпеці. Звіт висвітлює Rust як вищу альтернативу для розробки безпечнішого програмного забезпечення, з огляду на його безпечну роботу з пам'яттю, і рекомендує його для критичних систем.
Це підкреслює важливість переосмислення вибору технологій для забезпечення кібербезпеки національної інфраструктури та закликає до подальших досліджень і освітніх ініціатив для ширшого прийняття Rust.
Читати більше..
У новому звіті Офісу Нац. Директора з питань Кібербезпеки Білого Дому акцентується на необхідності відмовитися від використання C і C++ через їхні вразливості в кібербезпеці. Звіт висвітлює Rust як вищу альтернативу для розробки безпечнішого програмного забезпечення, з огляду на його безпечну роботу з пам'яттю, і рекомендує його для критичних систем.
Це підкреслює важливість переосмислення вибору технологій для забезпечення кібербезпеки національної інфраструктури та закликає до подальших досліджень і освітніх ініціатив для ширшого прийняття Rust.
Читати більше..
InfoWorld
White House urges developers to dump C and C++
Biden administration calls for developers to embrace memory-safe programing languages and move away from those that cause buffer overflows and other memory access vulnerabilities.
👍3🤡2