#prog #article
Understanding Mesh Allocator
Аллокатор, который позволяет проводить дефрагментацию выделенной памяти без смены адресов выделенных объектов за счёт манипуляции отображения виртуальной памяти на физическую.
Именно, если объекты в пределах двух страниц виртуальной памяти располагаются на неперекрывающихся местах, то можно скопировать объекты из одной соответствующей страницы физической памяти в другую, после чего исправить отображение виртуальной памяти на физическую и отдать страницу физической памяти обратно операционной системе. Собственно, это и есть операция meshing, которая и дала аллокатору имя.
Для того, чтобы повысить вероятность применимости операции meshing, аллокатор выделяет объекты в пределах одной страницы в случайных местах. На удивление, на производительности это не сказывается — авторы спекулируют, что это связано с тем, что в реальных нагрузках с более традиционными аллокаторами память и так фрагментирована.
(thanks @jemalloc)
Understanding Mesh Allocator
Аллокатор, который позволяет проводить дефрагментацию выделенной памяти без смены адресов выделенных объектов за счёт манипуляции отображения виртуальной памяти на физическую.
Именно, если объекты в пределах двух страниц виртуальной памяти располагаются на неперекрывающихся местах, то можно скопировать объекты из одной соответствующей страницы физической памяти в другую, после чего исправить отображение виртуальной памяти на физическую и отдать страницу физической памяти обратно операционной системе. Собственно, это и есть операция meshing, которая и дала аллокатору имя.
Для того, чтобы повысить вероятность применимости операции meshing, аллокатор выделяет объекты в пределах одной страницы в случайных местах. На удивление, на производительности это не сказывается — авторы спекулируют, что это связано с тем, что в реальных нагрузках с более традиционными аллокаторами память и так фрагментирована.
(thanks @jemalloc)
veera.app
Understanding Mesh Allocator
👍5🤔1
#prog #c #rust #article
Porting libyaml to Safe Rust: Some Thoughts
Или о том, как автор перевёл libyaml, сконвертированный c2rust, в идиоматичный Rust-код. Почему? Этот код используется как бекенд для serde-yaml и при этом существующий интерфейс поверх не давал информацию о положении частей входа вне ошибок.
The result is not just safer and easier, it is also just as performant
Автор также более подробно рассказывает о тонкостях реализации на C и о том, как они изменились с переходом на Rust.
Porting libyaml to Safe Rust: Some Thoughts
Или о том, как автор перевёл libyaml, сконвертированный c2rust, в идиоматичный Rust-код. Почему? Этот код используется как бекенд для serde-yaml и при этом существующий интерфейс поверх не давал информацию о положении частей входа вне ошибок.
The result is not just safer and easier, it is also just as performant
Автор также более подробно рассказывает о тонкостях реализации на C и о том, как они изменились с переходом на Rust.
simonask.github.io
libyaml-safer
👍7
#gamedev #video
Искусственный интеллект в играх не обязательно должен быть продвинутым, чтобы бросать игроку вызов. Довольно наглядно видно на примере разбора устройства AI в "Into the Breach".
youtu.be/fkEG55gFqrA
Искусственный интеллект в играх не обязательно должен быть продвинутым, чтобы бросать игроку вызов. Довольно наглядно видно на примере разбора устройства AI в "Into the Breach".
youtu.be/fkEG55gFqrA
YouTube
The Secret of Into the Breach's AI: Power in Simplicity | AI and Games #72
Sometimes you just don't need super flashy AI in your game. You just need something that is 'good enough' for what your game is trying to do. With that in mind, we dive behind the scenes of Subset Games 2018 release 'Into the Breach', and find out that…
👍9
Наконец-то вроде бы привёл в порядок режим, чтобы спать не днём
@
Наступил выходной
@
Наступил выходной
🌚10🔥1
Nox from Hell 🏴
Photo
Был бы лет на 10 младше — обзавидовался бы. Хотя, блин, я и сейчас немного завидую
💯11