Size: a a a

Rust — русскоговорящее сообществo

2020 September 06

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
В винде, насколько я помню, надо линкеру задать
/STACK:размер_стека_в_байтах
источник

H

Hedgar in Rust — русскоговорящее сообществo
Mikail Bagishov
Но в линуксе есть команда ulimit, с помощью которой уже перед запуском можно задавать размер стека по умолчанию
да, так работает, но от пользователей нельзя такое требовать
источник

H

Hedgar in Rust — русскоговорящее сообществo
Mikail Bagishov
В винде, насколько я помню, надо линкеру задать
/STACK:размер_стека_в_байтах
+
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Hedgar
да, так работает, но от пользователей нельзя такое требовать
Можно попробовать дернуть сисколл prlimit и перезапуститься
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Ну или написать код так, чтобы он был менее требователен к размеру стека
источник

VK

Vasily Kondratyev in Rust — русскоговорящее сообществo
Hedgar
да, так работает, но от пользователей нельзя такое требовать
В линуксе обычная практика заворачивать exe в sh-враппер, который устанавливает среду и запускает exe. Часто делают имя exe неудобонаписуемым для уменьшения вероятности вызова непосредственно. Ну, а последняя мода — docker, в который можно завернуть кое-что ещё.
источник

H

Hedgar in Rust — русскоговорящее сообществo
Mikail Bagishov
Можно попробовать дернуть сисколл prlimit и перезапуститься
да, в крайнем случае, но решение с отдельным потоком вверху как-то намного чище всех остальных)
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Mikail Bagishov
Ну или написать код так, чтобы он был менее требователен к размеру стека
И для этого даже не обязательно руками моделировать стек, на самом деле.
источник

H

Hedgar in Rust — русскоговорящее сообществo
если сработает, конечно
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Можно у каждой вершины вычислить размер ее поддерева, и потом обход дерева написать в виде цикла, который рекурсивно вызывается от всех детей вершины, кроме самого жирного, а потом на следующей своей итерации переходит в него.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Тогда глубина рекурсии не превысит двоичный логарифм от размера дерева, то есть будет очень маленькой
источник

H

Hedgar in Rust — русскоговорящее сообществo
Mikail Bagishov
Можно у каждой вершины вычислить размер ее поддерева, и потом обход дерева написать в виде цикла, который рекурсивно вызывается от всех детей вершины, кроме самого жирного, а потом на следующей своей итерации переходит в него.
да, интересно, но код большой и некогда переписывать(
источник

H

Hedgar in Rust — русскоговорящее сообществo
учитывая, что ОЗУ в 2020 стоит копейки)
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Hedgar
учитывая, что ОЗУ в 2020 стоит копейки)
Ну тут проблема не в оперативке, а в стеке
источник

AT

Alexander Tchitchigi... in Rust — русскоговорящее сообществo
Mikail Bagishov
Ну тут проблема не в оперативке, а в стеке
Стек, внезапно, располагается в оперативке. 😉
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Alexander Tchitchigin
Стек, внезапно, располагается в оперативке. 😉
Да, но лимит на стек по умолчанию жестче, чем лимит на память в целом.
источник

H

Hedgar in Rust — русскоговорящее сообществo
Mikail Bagishov
Ну тут проблема не в оперативке, а в стеке
так если ты его увеличишь до гига, то никто не пострадает
источник

H

Hedgar in Rust — русскоговорящее сообществo
кроме домохозяек с компом из 90х)
источник

Э

Эрик in Rust — русскоговорящее сообществo
Hedgar
кроме домохозяек с компом из 90х)
источник

H

Hedgar in Rust — русскоговорящее сообществo
гы))
источник