https://nickb.dev/blog/the-dark-side-of-inlining-and-monomorphization/ #perf
Зумеры, в очередной раз, переизобретают и переописывают то, что всем заинтересованным людям давно известно - чрезмерный inline-инг (современное его название - мономорфизация, но кому какое дело?) - не только полезно, но и очень вредно.
Статью я проглядел мельком, поэтому не знаю, был ли там озвучен самый главный вред от чрезмерного встраивания (загрязнение кешей для кода процессора, и, тем самым, замедление на реальных задачах (но не на бенчмарках)), поэтому озвучиваю его сейчас, да.
Зумеры, в очередной раз, переизобретают и переописывают то, что всем заинтересованным людям давно известно - чрезмерный inline-инг (современное его название - мономорфизация, но кому какое дело?) - не только полезно, но и очень вредно.
Статью я проглядел мельком, поэтому не знаю, был ли там озвучен самый главный вред от чрезмерного встраивания (загрязнение кешей для кода процессора, и, тем самым, замедление на реальных задачах (но не на бенчмарках)), поэтому озвучиваю его сейчас, да.
nickb.dev
The dark side of inlining and monomorphization
After introducing an incremental lexer that is generic over a Read instance, compilation times quadrupled and output size tripled. What happened? And is it possible to claw back without any downsides?
😁7🤮3🔥2
Forwarded from /g/‘s Tech Memes (ᅠ ᅠ)
This media is not supported in your browser
VIEW IN TELEGRAM
👍8❤5🔥3😁3🤮3
commit -m "better"
Продолжаю свой quest for #terminal. #zutty Напомню, что пока использую #foot, но и к нему у меня есть претензии(автор череcчур переусложнил логику инкрементальной перерисовки, и она у него иногда глючит). Вот, новые кандидаты: * https://github.com/tomscii/zutty…
#terminal #rant
https://www.jeffquast.com/post/ucs-detect-test-results/
https://ucs-detect.readthedocs.io/results.html
Монументальный текст (от автора python wcwidth) про то, как разные терминалы работают со всякими "странными" unicode последовательностями.
"Странными" в данном контексте я называю такие последовательности, которые занимают на экране терминала не столько же клеток, сколько в них юникодных символов. Последовательности нулевой ширины, эмодзи, какие-то широкие азиатские иероглифы, и так далее.
Unicode, в попытке объять необъятное (== унифицировано описать все разнообразие способов передать символьную информацию), идет куда-то не туда.
Вот раньше все было просто - 1 char == 1 клетка на экране (может быть, разной ширины, если не monospace). Потом стало сложнее, разных символов стало настолько много, что они перестали влезать в 1 байт, потом в 2. Были изобретены разные транспортные кодировки, типа utf8, но внутри лежал все тот же самый 4-байтный codepoint.
То, что происходит сейчас, напоминает попытку запихнуть произвольную интерпретируемую программу поверх этих codepoint, чтобы получить эффекты, которых раньше получить было нельзя.
Логическое завершение этого процесса - это запихнуть вместо текста сниппет WebAssembly кода, который, в зависимости от контекста, сможет отрендерить себя на канве той или иной всратости.
Потому что как еще унифицировать анимированное эмодзи с какахой и, не знаю, символы нулевой ширины со всем остальным зоопарком, я не понимаю.
Как нужно?
1) Нужно пытаться перестать запихнуть в Unicode всякого рода symbol of the day, типа анимированной какахи.
2) Нужно сказать, что терминал - он не для вывода произвольного Unicode текста, а только для такого текста, который имеет разумное (две клетки на символ - неразумное, усложняет вообще все в разы) погружение в концепцию клеток фиксированной ширины. Для всего остального есть браузер.
(я, например, даже не расстроюсь, если в терминале останется только первые 128 символов из ASCII, но, врочем, я и полезность юникодных имен файлов до сих пор не очень осознал)
https://www.jeffquast.com/post/ucs-detect-test-results/
https://ucs-detect.readthedocs.io/results.html
Монументальный текст (от автора python wcwidth) про то, как разные терминалы работают со всякими "странными" unicode последовательностями.
"Странными" в данном контексте я называю такие последовательности, которые занимают на экране терминала не столько же клеток, сколько в них юникодных символов. Последовательности нулевой ширины, эмодзи, какие-то широкие азиатские иероглифы, и так далее.
Unicode, в попытке объять необъятное (== унифицировано описать все разнообразие способов передать символьную информацию), идет куда-то не туда.
Вот раньше все было просто - 1 char == 1 клетка на экране (может быть, разной ширины, если не monospace). Потом стало сложнее, разных символов стало настолько много, что они перестали влезать в 1 байт, потом в 2. Были изобретены разные транспортные кодировки, типа utf8, но внутри лежал все тот же самый 4-байтный codepoint.
То, что происходит сейчас, напоминает попытку запихнуть произвольную интерпретируемую программу поверх этих codepoint, чтобы получить эффекты, которых раньше получить было нельзя.
Логическое завершение этого процесса - это запихнуть вместо текста сниппет WebAssembly кода, который, в зависимости от контекста, сможет отрендерить себя на канве той или иной всратости.
Потому что как еще унифицировать анимированное эмодзи с какахой и, не знаю, символы нулевой ширины со всем остальным зоопарком, я не понимаю.
Как нужно?
1) Нужно пытаться перестать запихнуть в Unicode всякого рода symbol of the day, типа анимированной какахи.
2) Нужно сказать, что терминал - он не для вывода произвольного Unicode текста, а только для такого текста, который имеет разумное (две клетки на символ - неразумное, усложняет вообще все в разы) погружение в концепцию клеток фиксированной ширины. Для всего остального есть браузер.
(я, например, даже не расстроюсь, если в терминале останется только первые 128 символов из ASCII, но, врочем, я и полезность юникодных имен файлов до сих пор не очень осознал)
Jeffquast
Terminal Emulators Battle Royale – Unicode Edition! · Articles
Software Engineer
👍15😁5🔥4💩4🥰2🤔1🤯1
commit -m "better"
https://www.opennet.ru/opennews/art.shtml?num=60317 https://tim.siosm.fr/blog/2023/12/19/ssh-over-unix-socket/ "Использование SSH поверх UNIX-сокета вместо sudo для избавления от #suid-файлов" Видимо, это не такое уж и безумие, раз пришло в голову не только…
https://github.com/systemd/systemd/pull/30547 #suid
"add new "uid0" command as alternative multi-call interface for systemd-run, as sudo replacement #30547"
Ну, все, идея пошла в main stream.
Даже, знаете ли, немного обидно, потому что -1 selling point, и уже нельзя сказать про почти любой пакетный менеджер что-то в стиле "а, это там, где еще не вычистили suid бинари с fs", и презрительно покривить носом.
"add new "uid0" command as alternative multi-call interface for systemd-run, as sudo replacement #30547"
Ну, все, идея пошла в main stream.
Даже, знаете ли, немного обидно, потому что -1 selling point, и уже нельзя сказать про почти любой пакетный менеджер что-то в стиле "а, это там, где еще не вычистили suid бинари с fs", и презрительно покривить носом.
GitHub
add new "uid0" command as alternative multi-call interface for systemd-run, as sudo replacement by poettering · Pull Request #30547…
A step towards the setuid/setgid less future.
Fixes #29199
Fixes #29199
🔥12
commit -m "better"
https://xeiaso.net/blog/openssl-3.x-secvuln-incoming Тут вот все спекулируют, какое нас ждет стрррашшшное CVE в openssl, а я чем хуже? Думаю, уровню нагнетаемого может соответствовать только один баг - кто-то придумал быстрый способ разложения на простые…
Терпеть не могу статьи в стиле псевдомонолога персонажей в чьей-то там голове, но, тем не менее, свежий подход к тому, как можно сопрягать go с другими компилируемыми языками, минуя cgo:
https://xeiaso.net/blog/carcinization-golang/
TL;DR - конпелируете библиотеку на Rust в #WebAssembly, и загружаете ее в Go через #wazero (pure go #WebAssembly #WASM #WASI runtime)
Что нам это дает? Нам это дает:
* безопасную песочницу
* без ограничений cgo (типа выполнения в отдельно выделенных потоках, и всякое такое)
(это отличается от ранее представленных способов, типа конпеляции всего в WebAssembly, и объединения через WebAssembly VM)
Понятное дело, что тут у нас в полный рост startup/warmup cost, и все, что с этим связано, но способ довольно интересный.
https://xeiaso.net/blog/carcinization-golang/
TL;DR - конпелируете библиотеку на Rust в #WebAssembly, и загружаете ее в Go через #wazero (pure go #WebAssembly #WASM #WASI runtime)
Что нам это дает? Нам это дает:
* безопасную песочницу
* без ограничений cgo (типа выполнения в отдельно выделенных потоках, и всякое такое)
(это отличается от ранее представленных способов, типа конпеляции всего в WebAssembly, и объединения через WebAssembly VM)
Понятное дело, что тут у нас в полный рост startup/warmup cost, и все, что с этим связано, но способ довольно интересный.
xeiaso.net
The carcinization of Go programs
Xe Iaso's personal website.
❤7🔥5🤔5👍2
Forwarded from /g/‘s Tech Memes (ᅠ ᅠ)
This media is not supported in your browser
VIEW IN TELEGRAM
Subscriber's submission
😁18👍3🔥3👌2
commit -m "better"
Поборол я сборку #hyprland, в целом, сейчас оно может служить такой альтернативой sway, для любителей свистелок и перделок. Sway, но с красивой и плавной анимацией, и переходами. Мне не понравилось. Обнаружил, что свежий hypr стал зависеть от udis86: htt…
Решил посмотреть, сколько займет времени переписать мои экзерсизы с #qtile (https://xn--r1a.website/itpgchannel/1437, потому что проект, кажется, мертв, мой патч там не то что не мержат, а даже и не смотрят - https://github.com/qtile/qtile/pull/4568), скажем, на #hyprland
Вот, полюбуйтесь, N-Stack layout буквально закопейки 2000 строчек довольно сложного кода - https://github.com/zakk4223/hyprNStack/blob/main/nstackLayout.cpp
Пока это только для очень, очень, упорных людей, а у меня столько времени нет. Мне бы хотя бы на десятичный порядок "дешевле" нужно.
Подожду, пока проект хоть немного подрастет, ну или поищу какое-нибудь другое место, куда можно встроиться.
Вот, полюбуйтесь, N-Stack layout буквально за
Пока это только для очень, очень, упорных людей, а у меня столько времени нет. Мне бы хотя бы на десятичный порядок "дешевле" нужно.
Подожду, пока проект хоть немного подрастет, ну или поищу какое-нибудь другое место, куда можно встроиться.
GitHub
hyprNStack/nstackLayout.cpp at main · zakk4223/hyprNStack
Hyprland plugin for N-stack tiling layout. Contribute to zakk4223/hyprNStack development by creating an account on GitHub.
❤4
#llvmweekly
https://github.com/llvm/llvm-project/commit/9783f28cbb15
Чуваки взяли, и применили clang-format на всю libc++. Респект, уважуха, поменьше бы проекты дрожали над историей, и не ссали переформатировать код для удобства чтения.
https://github.com/llvm/llvm-project/commit/9783f28cbb15
Чуваки взяли, и применили clang-format на всю libc++. Респект, уважуха, поменьше бы проекты дрожали над историей, и не ссали переформатировать код для удобства чтения.
GitHub
[libc++] Format the code base (#74334) · llvm/llvm-project@9783f28
This patch runs clang-format on all of libcxx/include and libcxx/src, in
accordance with the RFC discussed at [1]. Follow-up patches will format
the benchmarks, the test suite and remaining parts...
accordance with the RFC discussed at [1]. Follow-up patches will format
the benchmarks, the test suite and remaining parts...
🔥27👍6💯4🤯3🫡2👎1👌1
commit -m "better"
#fast_python #nogil Чувак этот (colesbury), судя по всему, таки войдет в историю, потому что коллеги собираютс принять proposal про nogil python: https://discuss.python.org/t/a-steering-council-notice-about-pep-703-making-the-global-interpreter-lock-optional…
#fast_python
https://www.opennet.ru/opennews/art.shtml?num=60352
А вот, пожалуйста, новый-кленовый JIT для python.
Вот цифры про perf:
"По сравнению с традиционным JIT-инструментарием (LLVM -O0) предложенный JIT обеспечивает в 100 раз более быструю генерацию кода и на 15% более быстрый результирующий код. По сравнению с компиляцией в WebAssembly (Liftoff) новый JIT генерирует код в 5 раз быстрее, а результирующий код работает на 50% быстрее. Если сравнивать новый JIT с оптимизирующим JIT (LuaJIT), использующим вручную написанный код на ассемблере, то предложенный вариант оказался быстрее в 13 из 44 тестах, а в среднем отстал по производительности на 35%, при существенном упрощении сопровождения и уменьшении уровня сложности реализации"
Конечно, с использованием LLVM, но, что интересно, LLVM нужен только в момент сборки самого JIT, но не в runtime.
Если что-то такое попадет в mainline, то это будет счастье.
https://www.opennet.ru/opennews/art.shtml?num=60352
А вот, пожалуйста, новый-кленовый JIT для python.
Вот цифры про perf:
"По сравнению с традиционным JIT-инструментарием (LLVM -O0) предложенный JIT обеспечивает в 100 раз более быструю генерацию кода и на 15% более быстрый результирующий код. По сравнению с компиляцией в WebAssembly (Liftoff) новый JIT генерирует код в 5 раз быстрее, а результирующий код работает на 50% быстрее. Если сравнивать новый JIT с оптимизирующим JIT (LuaJIT), использующим вручную написанный код на ассемблере, то предложенный вариант оказался быстрее в 13 из 44 тестах, а в среднем отстал по производительности на 35%, при существенном упрощении сопровождения и уменьшении уровня сложности реализации"
Конечно, с использованием LLVM, но, что интересно, LLVM нужен только в момент сборки самого JIT, но не в runtime.
Если что-то такое попадет в mainline, то это будет счастье.
www.opennet.ru
Для Python предложен JIT-компилятор, использующий технику copy-and-patch
Брандт Букер (Brandt Bucher) из компании Microsoft, входящий в число core-разработчиков CPython и работающий в команде, занимающейся увеличением производительности интерпретатора CPython, опубликовал реализацию JIT-компилятора для Python, использующую технику…
🔥23🤔6❤3
Две ссылки, которые особенно хороши вместе.
https://www.opennet.ru/opennews/art.shtml?num=60360
https://www.theregister.com/2023/12/27/bruce_perens_post_open/
Некто Брюс Перенс, известный oss склочник (https://xn--r1a.website/itpgchannel/145, известен он тем, что пытается нажиться на несуществующем коде, а, конкретно, на busybox, несмотря на то, что его кода там - закрывающие фигурные скобочки), решил, что существующие OSS лицензии не позволяют ему достаточно хорошо наживаться на несуществующем коде, и придумал какого-то очередного кадавра, который должен позволитьперераспределить деньги от коммерческих компаний в его кошелек гармонизировать сосуществование коммерческих компаний с ним.
О как.
Для этого предлагается запилить какую-то новую лицензию, код по которой можно использовать, если ты прошел аудит в какой-то третьей компании/фонде, которые авторизованы делать такой аудит. Например, если они принадлежат Перенсу. И раз в год, все желающие использовать софт под этой лицензией, должны проходить такой аудит. А для этого они должны или участвовать в разработке OSS софта, или платить "куда надо" денег.
Там, где есть перераспределение чужого, там всегда есть и злоупотребление, как мы это все прекрасно понимаем. Поэтому понятно, что это влажные мечты, и они не имеют никакого отношения к реальности. Потому что настоящие игроки, стейкхолдеры, которые пишут 95% oss софта, под это никогда не подпишутся, так как они этот софт пишут не для "прямого" зарабатывания на этом софте денег (вот как Гугл пишет свой Хром, например)
И вторая ссылка - https://www.opennet.ru/opennews/art.shtml?num=60358
Разработчики Debian не хотят нести ответственность в рамках https://en.wikipedia.org/wiki/Cyber_Resilience_Act
В целом, это очень понятно - если ты ничего не получаешь за свой софт, то и материальную ответственность нести не можешь.
Это, конечно, поставило бы и Red Hat, и вот такую структуру Перенса, и разработчиков, которые решает подзаработать на open source, в интересное положение - хочешь денег, неси материальную ответственность.
Мне кажется, такой подход сделал бы переупаковку oss софта существенно менее прибыльным бизнесом.
https://www.opennet.ru/opennews/art.shtml?num=60360
https://www.theregister.com/2023/12/27/bruce_perens_post_open/
Некто Брюс Перенс, известный oss склочник (https://xn--r1a.website/itpgchannel/145, известен он тем, что пытается нажиться на несуществующем коде, а, конкретно, на busybox, несмотря на то, что его кода там - закрывающие фигурные скобочки), решил, что существующие OSS лицензии не позволяют ему достаточно хорошо наживаться на несуществующем коде, и придумал какого-то очередного кадавра, который должен позволить
О как.
Для этого предлагается запилить какую-то новую лицензию, код по которой можно использовать, если ты прошел аудит в какой-то третьей компании/фонде, которые авторизованы делать такой аудит. Например, если они принадлежат Перенсу. И раз в год, все желающие использовать софт под этой лицензией, должны проходить такой аудит. А для этого они должны или участвовать в разработке OSS софта, или платить "куда надо" денег.
Там, где есть перераспределение чужого, там всегда есть и злоупотребление, как мы это все прекрасно понимаем. Поэтому понятно, что это влажные мечты, и они не имеют никакого отношения к реальности. Потому что настоящие игроки, стейкхолдеры, которые пишут 95% oss софта, под это никогда не подпишутся, так как они этот софт пишут не для "прямого" зарабатывания на этом софте денег (вот как Гугл пишет свой Хром, например)
И вторая ссылка - https://www.opennet.ru/opennews/art.shtml?num=60358
Разработчики Debian не хотят нести ответственность в рамках https://en.wikipedia.org/wiki/Cyber_Resilience_Act
В целом, это очень понятно - если ты ничего не получаешь за свой софт, то и материальную ответственность нести не можешь.
Это, конечно, поставило бы и Red Hat, и вот такую структуру Перенса, и разработчиков, которые решает подзаработать на open source, в интересное положение - хочешь денег, неси материальную ответственность.
Мне кажется, такой подход сделал бы переупаковку oss софта существенно менее прибыльным бизнесом.
www.opennet.ru
Брюс Перенс, соавтор определения Open Source, развивает концепцию Post-Open Source
Брюс Перенс (Bruce Perens), один из авторов определения Open Source и соучредитель организации Open Source Initiative, считает, что парадигма Open Source достигла рубежа, при котором открытые лицензии не обеспечивают должной защиты, и настало время для создания…
👍14🤔3🔥2
commit -m "better"
#fast_python https://www.opennet.ru/opennews/art.shtml?num=60352 А вот, пожалуйста, новый-кленовый JIT для python. Вот цифры про perf: "По сравнению с традиционным JIT-инструментарием (LLVM -O0) предложенный JIT обеспечивает в 100 раз более быструю генерацию…
#perf #fast_python
Мне стало интересно, что там за такой новый-кленовый JIT.
И почему он должен собираться именно LLVM? Это звучало вообще странно - как так, в runtime кодогенератор от LLVM не нужен, а во время сборки - нужен? Это что за магия такая?
Все оказалось довольно просто, достаточно было прочесть https://github.com/brandtbucher/cpython/blob/justin/Tools/jit/build.py, ну и немножко https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110899 (по этой ссылке содержится просьба к GCC добавить недостающие кусочки к gcc, чтобы можно было использовать не LLVM, а gcc)
(Немного в сторону от основной темы, авторы gcc, конечно, встали на дыбы, потому что как это так, не за ними все повторяют, а им надо что-то повторить за clang?
"Shouldn't we first discuss whether any of this, or particular aspects of it, are a good idea at all, before specifying behaviour that a random compiler happened to implement?")
В общем, суть в следующем: а давайте мы сконпелируем исходный текст интерпретатора с набором волшебных ключей, чтобы получившийся объектный код можно было растащить на кусочки, а потом из них собрать объектный код для байткода python?
Вот, допустим, у нас есть такой кусок байткода (это не питонячий байткод, но так будет понятнее):
Дальше в интерпретаторе есть огромный switch/case, где написано:
Далее мы компилируем этот файл в объектный код, и аккуратно вырезаем из него код, соответствующий только этому одному блоку
После чего мы проходимся по всему байткоду, который был построен cpython, и заменяем в нем отдельные инструкции на вот эти вот кусочки заранее скомпилированного нативного кода.
Затем проходимся сверху скопипасченного объектного кода парой регулярок, и получаем код, который реально может быть выполнен!
От LLVM тут нужно, чтобы он сумел скомпилировать цикл интерпретатора для другого calling convention, а, конкретно, для такого специального CC, когда все регистры сохраняет callee. Видимо, так сильно проще получить код, который можно нарезать на независимые кусочки, которые далее можно "просто" конкатенировать. Я на получившиеся кусочки глазами не смотрел, поверил автору на слово.
UPD: вот paper, где описана эта техника copy and patch - https://arxiv.org/pdf/2011.13127.pdf , from https://aha.stanford.edu/sites/g/files/sbiybj20066/files/media/file/aha_050621_xu_copy-and-patch.pdf
UPD: утащю из комментов - https://xn--r1a.website/c/1469934025/21379
Мне стало интересно, что там за такой новый-кленовый JIT.
И почему он должен собираться именно LLVM? Это звучало вообще странно - как так, в runtime кодогенератор от LLVM не нужен, а во время сборки - нужен? Это что за магия такая?
Все оказалось довольно просто, достаточно было прочесть https://github.com/brandtbucher/cpython/blob/justin/Tools/jit/build.py, ну и немножко https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110899 (по этой ссылке содержится просьба к GCC добавить недостающие кусочки к gcc, чтобы можно было использовать не LLVM, а gcc)
(Немного в сторону от основной темы, авторы gcc, конечно, встали на дыбы, потому что как это так, не за ними все повторяют, а им надо что-то повторить за clang?
"Shouldn't we first discuss whether any of this, or particular aspects of it, are a good idea at all, before specifying behaviour that a random compiler happened to implement?")
В общем, суть в следующем: а давайте мы сконпелируем исходный текст интерпретатора с набором волшебных ключей, чтобы получившийся объектный код можно было растащить на кусочки, а потом из них собрать объектный код для байткода python?
Вот, допустим, у нас есть такой кусок байткода (это не питонячий байткод, но так будет понятнее):
...
mov A, B
...
Дальше в интерпретаторе есть огромный switch/case, где написано:
...
if (opcode == 'mov') {
auto op1 = getNextOp();
auto op2 = getNextOp();
auto& g = interpContext->globals;
g[op1] = g[op2];
}
...
Далее мы компилируем этот файл в объектный код, и аккуратно вырезаем из него код, соответствующий только этому одному блоку
if () { ... }После чего мы проходимся по всему байткоду, который был построен cpython, и заменяем в нем отдельные инструкции на вот эти вот кусочки заранее скомпилированного нативного кода.
Затем проходимся сверху скопипасченного объектного кода парой регулярок, и получаем код, который реально может быть выполнен!
От LLVM тут нужно, чтобы он сумел скомпилировать цикл интерпретатора для другого calling convention, а, конкретно, для такого специального CC, когда все регистры сохраняет callee. Видимо, так сильно проще получить код, который можно нарезать на независимые кусочки, которые далее можно "просто" конкатенировать. Я на получившиеся кусочки глазами не смотрел, поверил автору на слово.
UPD: вот paper, где описана эта техника copy and patch - https://arxiv.org/pdf/2011.13127.pdf , from https://aha.stanford.edu/sites/g/files/sbiybj20066/files/media/file/aha_050621_xu_copy-and-patch.pdf
UPD: утащю из комментов - https://xn--r1a.website/c/1469934025/21379
GitHub
cpython/Tools/jit/build.py at justin · brandtbucher/cpython
The Python programming language. Contribute to brandtbucher/cpython development by creating an account on GitHub.
🔥12👍9❤4🤔2🤯2😱1
commit -m "better"
https://www.phoronix.com/review/xeon-max-linux-software Миша с фороникса, в очередной раз, пишет, какой же clear linux крутой. https://www.phoronix.com/review/xeon-max-linux-software/5 - сводный результат. TL;DR - чуть ли не в разы быстрее, чем другие дистрибутивы…
https://www.phoronix.com/review/ubuntu-x86-64-v3-benchmark
Миша с фороникса, в очередной раз,врет лжет накручивает статистику, в очередном странном бенчмарке.
На этот раз он сравнивает две сборки убунты - обычную x86_64, и оптимизированную под современные x86_64 ядра.
Что я имею сказать по поводу его исследования?
* https://www.phoronix.com/review/ubuntu-x86-64-v3-benchmark/4 - у него нет ожидаемого геометрического среднего всех тестов (а это самый лучший способ усреднять бенчмарки разной природы). Почему? Потому что, наверное, там пшик с постным маслом, вот почему.
* https://www.phoronix.com/review/ubuntu-x86-64-v3-benchmark/4 - вот возьмем тест, который дал самый большой отрыв - stress-ng по скорости копирования памяти. Я вас умоляю, там везде (что в ядре, что в glibc) runtime cpu dispatch, и этот тест должен показать одинаковые значения на одном и том же железе.
Я полез, почитал код stress ng - там 4 разных способа сравнить скорость memcpy - https://github.com/ColinIanKing/stress-ng/blob/master/stress-memcpy.c#L31
Понятное дело, что "настоящий" memcpy не дал бы такую просадку, наверняка он позвал что-то из builtin, naive, и все такое, что не имеет никакого отношения к реальности.
Писал, и буду писать, что Мише с фороникса веры нет, он или подпездывает в меру своих пристрастий, или в меру того, как ему кто-то подкинет деньжат (я свечку не держал, но вот мой предыдущий текст про clear linux явно на это намекает).
Миша с фороникса, в очередной раз,
На этот раз он сравнивает две сборки убунты - обычную x86_64, и оптимизированную под современные x86_64 ядра.
Что я имею сказать по поводу его исследования?
* https://www.phoronix.com/review/ubuntu-x86-64-v3-benchmark/4 - у него нет ожидаемого геометрического среднего всех тестов (а это самый лучший способ усреднять бенчмарки разной природы). Почему? Потому что, наверное, там пшик с постным маслом, вот почему.
* https://www.phoronix.com/review/ubuntu-x86-64-v3-benchmark/4 - вот возьмем тест, который дал самый большой отрыв - stress-ng по скорости копирования памяти. Я вас умоляю, там везде (что в ядре, что в glibc) runtime cpu dispatch, и этот тест должен показать одинаковые значения на одном и том же железе.
Я полез, почитал код stress ng - там 4 разных способа сравнить скорость memcpy - https://github.com/ColinIanKing/stress-ng/blob/master/stress-memcpy.c#L31
Понятное дело, что "настоящий" memcpy не дал бы такую просадку, наверняка он позвал что-то из builtin, naive, и все такое, что не имеет никакого отношения к реальности.
Писал, и буду писать, что Мише с фороникса веры нет, он или подпездывает в меру своих пристрастий, или в меру того, как ему кто-то подкинет деньжат (я свечку не держал, но вот мой предыдущий текст про clear linux явно на это намекает).
Phoronix
Benchmarking The Experimental Ubuntu x86-64-v3 Build For Greater Performance On Modern CPUs
One of the exciting innovations currently being explored by Canonical ahead of the Ubuntu 24.04 LTS release is an x86-64-v3 build of the OS / packages.
👍7🤡5❤3🔥2😁2🤔1
https://www.gentoo.org/news/2023/12/29/Gentoo-binary.html
Gentoo goes Binary!
Мне это, конечно, кажется странным.
Прелесть gentoo, на мой вкус, исключительно в ее
Если распространять бинарные сборки только для самых популярных наборов флагов - то cache hit у такой инсталляции должен быть очень мал.
А если пытаться распространять сборочный кеш для широкого набора флагов - то тут, конечно, всплывают лицензионные ограничения в полный рост, потому что не любой бинарь, который ты можешь собрать, используя кастомные use флаги, можно распространять.
Gentoo goes Binary!
Мне это, конечно, кажется странным.
Прелесть gentoo, на мой вкус, исключительно в ее
use флагах. Без них - ну arch и arch, найдите 5 отличий, как говорится.Если распространять бинарные сборки только для самых популярных наборов флагов - то cache hit у такой инсталляции должен быть очень мал.
А если пытаться распространять сборочный кеш для широкого набора флагов - то тут, конечно, всплывают лицензионные ограничения в полный рост, потому что не любой бинарь, который ты можешь собрать, используя кастомные use флаги, можно распространять.
www.gentoo.org
Gentoo goes Binary! – Gentoo Linux
News and information from Gentoo Linux
🤔6💔5🔥2
По слухам, админ канала только проснулся, и начал доедать оливьешечку, и до новостей из мира IT ему пока дела нет, чего он и вам желает!
❤36🎄25👍8😁4🔥3🎉3🥱2🤝1
commit -m "better"
Photo
Вот я балда - КДПВ нарисовал, а текст добавить забыл.
https://www.pypy.org/posts/2023/12/pypy-moved-to-git-github.html
https://www.pypy.org/posts/2023/12/pypy-moved-to-git-github.html#motivation
PyPy переезжает в github.
"Open Source has become synonymous with GitHub, and we are too small to change that"
https://www.pypy.org/posts/2023/12/pypy-moved-to-git-github.html
https://www.pypy.org/posts/2023/12/pypy-moved-to-git-github.html#motivation
PyPy переезжает в github.
"Open Source has become synonymous with GitHub, and we are too small to change that"
PyPy
PyPy has moved to Git, GitHub
PyPy has moved its canonical repo and issue tracker from
https://foss.heptapod.net/pypy/pypy to https://github.com/pypy/pypy. Obviously,
this means development will now be tracked in Git rather than M
https://foss.heptapod.net/pypy/pypy to https://github.com/pypy/pypy. Obviously,
this means development will now be tracked in Git rather than M
🔥21🥴7😁3🤡2😭1
commit -m "better"
https://www.opennet.ru/opennews/art.shtml?num=58392 К прошлогоднему тексту про opennet добавить нечего, он остается лучшим источником текстов на почитать.
Продолжим славную традицию репоста новогоднего дайджеста от opennet, они лучшие!
https://www.opennet.ru/opennews/art.shtml?num=60367
https://www.opennet.ru/opennews/art.shtml?num=60367
www.opennet.ru
Наиболее важные события 2023 года, связанные с открытыми проектами
Итоговая подборка наиболее важных и заметных событий 2023 года, связанных с открытыми проектами и информационной безопасностью:
👍9😴5❤3