#prog #article
Why I Threw Away Perfectly Good Code
One of my recent responsibilities was to improve how Dolt stores JSON documents internally, in order to speed up complicated queries. <...>
And then we scrapped the whole thing. The PR never got merged. We replaced it instead with a different design that shared a lot of the same high-level ideas, but had almost no code reuse. We spent a lot of engineer-hours on the original design, just to throw it all out. Where did we go wrong?
Except... I don't think we did go wrong. I believe that designing and implementing the original prototype was the right call.
I believe that scrapping it was also the right call.
<...>
Scrapping the prototype code and building the final implementation from scratch freed us from any constraints that the old code imposed and kept us from being locked into undesirable trade-offs.
Кстати, как оказалось, несмотря на то, что представление JSON в виде таблицы с JSON-путями в качестве ключей, строго говоря, довольно расточительно, на практике из-за сжатия для формата на диске это не было проблемой.
Why I Threw Away Perfectly Good Code
One of my recent responsibilities was to improve how Dolt stores JSON documents internally, in order to speed up complicated queries. <...>
And then we scrapped the whole thing. The PR never got merged. We replaced it instead with a different design that shared a lot of the same high-level ideas, but had almost no code reuse. We spent a lot of engineer-hours on the original design, just to throw it all out. Where did we go wrong?
Except... I don't think we did go wrong. I believe that designing and implementing the original prototype was the right call.
I believe that scrapping it was also the right call.
<...>
Scrapping the prototype code and building the final implementation from scratch freed us from any constraints that the old code imposed and kept us from being locked into undesirable trade-offs.
Кстати, как оказалось, несмотря на то, что представление JSON в виде таблицы с JSON-путями в качестве ключей, строго говоря, довольно расточительно, на практике из-за сжатия для формата на диске это не было проблемой.
Dolthub
Why I Threw Away Perfectly Good Code
Throwing out code doesn't mean that it wasn't worth writing.
Типа про IT
Dolt is a SQL database that you can fork, clone, branch, merge, push and pull just like a git repository. Connect to Dolt just like any MySQL database to run queries or update the data using SQL commands. Use the command line interface to import CSV files…
#prog #article
В Dolt используется вероятностная структура данных под названием prolly trees. Они похожи по строение и по характеристикам производительности на B-trees, но, в отличие от них, prolly trees:
1. Имеют строение, не зависящее от порядка вставки ключей.
2. Для них можно эффективно подсчитать разницу, и сложность этой операции будет пропорциональна количеству отличающихся значений.
3. Автоматически переиспользуют хранилище: если у двух prolly trees есть общие части в структуре, то общие части будут использовать одну и ту же память.
Статья Prolly Trees рассказывает об их устройстве и о некоторых нюансах реализации, используемой в Dolt.
В Dolt используется вероятностная структура данных под названием prolly trees. Они похожи по строение и по характеристикам производительности на B-trees, но, в отличие от них, prolly trees:
1. Имеют строение, не зависящее от порядка вставки ключей.
2. Для них можно эффективно подсчитать разницу, и сложность этой операции будет пропорциональна количеству отличающихся значений.
3. Автоматически переиспользуют хранилище: если у двух prolly trees есть общие части в структуре, то общие части будут использовать одну и ту же память.
Статья Prolly Trees рассказывает об их устройстве и о некоторых нюансах реализации, используемой в Dolt.
🤔5
Forwarded from Алиса копается
#dev
https://purplesyringa.moe/blog/i-sped-up-serde-json-strings-by-20-percent/
Последний месяц я занималась оптимизацией serde_json. Подумала, что почитать про мой опыт может быть интересно: одно дело код, другое — мыслительные процессы, backstory и прикольные трюки и подвохи, которые просто так кодом не опишешь. Я часто нахожу интересное на lemire.me; решила попробовать написать что-то в том же стиле.
https://purplesyringa.moe/blog/i-sped-up-serde-json-strings-by-20-percent/
Последний месяц я занималась оптимизацией serde_json. Подумала, что почитать про мой опыт может быть интересно: одно дело код, другое — мыслительные процессы, backstory и прикольные трюки и подвохи, которые просто так кодом не опишешь. Я часто нахожу интересное на lemire.me; решила попробовать написать что-то в том же стиле.
purplesyringa's blog
I sped up serde_json strings by 20%
I have recently done some performance work and realized that reading about my experience could be entertaining. Teaching to think is just as important as teaching to code, but this is seldom done; I think something I’ve done last month is a great opportunity…
🔥11💩3
#prog #rust #article
Doctests - How were they improved?
TL;DR: rustdoc компилировал каждый док-тест в отдельный процесс, но начиная с edition 2024 объединяет док-тесты в один файл для тестов, для которых это возможно
Doctests - How were they improved?
TL;DR: rustdoc компилировал каждый док-тест в отдельный процесс, но начиная с edition 2024 объединяет док-тесты в один файл для тестов, для которых это возможно
blog.guillaume-gomez.fr
Doctests - How were they improved?
Blog of Guillaume Gomez (Doctests - How were they improved?)
👍6
Forwarded from Kedr to Earth | Земля, я Кедр (✅ Yuri Ammosov)
Прислали читатели вот такой скриншот. Что-то эта новость мне смутно припомнила. Призадумался я, и вспомнил.
На шестой день Бородавкин хотел было продолжать бомбардировку, но уже заметил измену. Аманатов ночью выпустили и многих настоящих солдат уволили вчистую и заменили оловянными солдатиками.
– А это что? – спросил он, указывая на оловянных солдатиков.
– Для легости, ваше благородие! – отвечали ему, – провианту не просит, а маршировку и он исполнять может!
Бородавкин ... вдруг остановился как пораженный перед оловянными солдатиками.
Постепенно, в глазах у всех солдатики начали наливаться кровью. Глаза их, доселе неподвижные, вдруг стали вращаться и выражать гнев; усы, нарисованные вкривь и вкось, встали на свои места и начали шевелиться; губы, представлявшие тонкую розовую черту, оттопырились и изъявляли намерение нечто произнести. Появились ноздри, о которых прежде и в помине не было, и начали раздуваться.
– Избы… избы… ломать! – невнятно, но как-то мрачно произнесли оловянные солдатики.
🤡6❤🔥3🤔3😁1
Forwarded from Технологический Болт Генона
Хронология событий
- YouTube стали замедлять
- Пользователи начали делать мозги провайдерам и ливать от них + писать жалобы на провайдеров
- РКН никак не помогал провайдерам решать их проблемы
- Провайдеры самостоятельно стали "ускорять" YouTube за свой счёт
https://www.kommersant.ru/doc/6919868
- РКН пришёл сразу к провайдерам и запретил это делать
https://www.kommersant.ru/doc/6921420
ЗЫ ГРЧЦ подчиняется РКН
- YouTube стали замедлять
- Пользователи начали делать мозги провайдерам и ливать от них + писать жалобы на провайдеров
- РКН никак не помогал провайдерам решать их проблемы
- Провайдеры самостоятельно стали "ускорять" YouTube за свой счёт
В отсутствие официального заявления Роскомнадзора о замедлении YouTube в России операторы связи начали устанавливать на своих сетях решения, которые делают сервис доступным для абонентов. Операторы пытаются привлечь новых абонентов, и так как сервис в РФ не внесен в реестр запрещенных и официально не заблокирован, их действия совершенно законны, отмечают юристы.
https://www.kommersant.ru/doc/6919868
- РКН пришёл сразу к провайдерам и запретил это делать
Роскомнадзор потребовал от операторов связи перестать искажать и подменять интернет-трафик, чтобы не препятствовать работе технических средств противодействия угрозам.
. . .
До 2 сентября операторы должны предоставить в ГРЧЦ отчёты о принятых мерах.
https://www.kommersant.ru/doc/6921420
ЗЫ ГРЧЦ подчиняется РКН
🤡23😁7
#prog #article
Mimalloc Cigarette: Losing one week of my life catching a memory leak
Или про то, как mimalloc иногда может держать память сильно дольше, чем надо.
Every now and then during malloc() mimalloc performs some internal bookkeeping, so when a thread goes to sleep (say, because it delegates handling HTTP requests into a separate thread pool...), this bookkeeping doesn't happen (for that particular thread).
The most nasty edge case that can happen here, and the one that we've stumbled upon, is when your thread allocates a lot of data, then launches other threads to work on that data, and then goes to sleep. As other threads work on memory and override stuff, Rust destructors are launched properly, but the underlying memory blocks simply get marked as "to be released".
(thanks @neroslaw)
Mimalloc Cigarette: Losing one week of my life catching a memory leak
Или про то, как mimalloc иногда может держать память сильно дольше, чем надо.
The most nasty edge case that can happen here, and the one that we've stumbled upon, is when your thread allocates a lot of data, then launches other threads to work on that data, and then goes to sleep. As other threads work on memory and override stuff, Rust destructors are launched properly, but the underlying memory blocks simply get marked as "to be released".
(thanks @neroslaw)
pwy.io
Mimalloc Cigarette: Losing one week of my life catching a memory leak
How do you solve a memory heisenbug?
👍5
Мало кто знает, но на самом деле IDE означает "Integrated systemD Environment"
😁24🤡6🫡2