|
|
3.8, Аноним (8), 09:29, 21/03/2019 [^] [^^] [^^^] [ответить]
| –3 +/– |
> VLA
Полезная штука, кстати. Жаль, что нет в стандарте ISO C.
| |
|
4.12, Аноним (12), 10:51, 21/03/2019 [^] [^^] [^^^] [ответить]
| +/– |
Отвратительная штука ибо ты не можешь отследить выделилась память или нет и тупо сваливаешься на переполнении стека
| |
|
|
6.14, Cradle (?), 12:31, 21/03/2019 [^] [^^] [^^^] [ответить]
| +/– |
иногда волнует, но также порой волнует потеря циклов 16-мгц контроллера на выделение и освобождение кучи когда на стеке место гарантировано есть. Так что лучше когда есть выбор.
| |
|
7.15, Аноним (13), 12:43, 21/03/2019 [^] [^^] [^^^] [ответить]
| +2 +/– |
> иногда волнует, но также порой волнует потеря циклов 16-мгц контроллера на выделение
> и освобождение кучи когда на стеке место гарантировано есть. Так что
> лучше когда есть выбор.
Вот и меня волнует. А того не волнует, он ведь "не можешь отследить..."
| |
7.18, Ordu (ok), 16:20, 21/03/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
Если ты статически уверен, что памяти на стеке достаточно, значит ты статически знаешь сколько там есть и сколько тебе надо. То есть ты посчитал максимальный размер того, что тебе надо, и убедился в том, что этот максимальный размер возможно выделить. Ну так выдели максимальный, в чём проблема-то?
Твоему 16MHz процессору это может даже приятнее будет, поскольку это может уменьшить количество динамической возни с указателем стека.
| |
|
8.23, Урри (?), 09:44, 22/03/2019 [^] [^^] [^^^] [ответить] | +2 +/– | А что, в любой программе существует только одна функция с однократным вызовом Б... текст свёрнут, показать | |
|
9.26, Cradle (?), 13:01, 22/03/2019 [^] [^^] [^^^] [ответить] | +/– | в embedded это еще возможно отследить и очень желательно , в браузере точно уже... текст свёрнут, показать | |
9.27, Cradle (?), 13:03, 22/03/2019 [^] [^^] [^^^] [ответить] | +/– | не то что с однократным, но нужно следить на каких уровнях вложенности она вызыв... текст свёрнут, показать | |
9.29, Ordu (ok), 15:48, 22/03/2019 [^] [^^] [^^^] [ответить] | +/– | Если у тебя для нескольких функций достаточно памяти на стеке, то ты ведь для ни... текст свёрнут, показать | |
|
|
11.31, Ordu (ok), 19:19, 22/03/2019 [^] [^^] [^^^] [ответить] | +/– | А зачем использовать alloca Если уж совсем никак не уйти от динамического разме... текст свёрнут, показать | |
|
|
|
8.25, Cradle (?), 12:57, 22/03/2019 [^] [^^] [^^^] [ответить] | +/– | на самом деле чаще всего так и делаем, хотя не красиво как-то Вообще дискуссия... текст свёрнут, показать | |
|
|
|
|
6.17, Аноним (16), 12:52, 21/03/2019 [^] [^^] [^^^] [ответить]
| +/– |
Другое дело, что если использоется VLA или alloca, особенно внутри if или цикла, то компилятору труднее оптимизировать, ибо Stack Pointer в пределах функции уже не постоянная величина, и надо либо генерить код, которые учитывает изменения Stack Pointer, либо таки использовать регистр под Frame Pointer, а не под что-то более полезное.
| |
|
5.33, adolfus (ok), 11:41, 25/03/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
На 64-разрядной архитектуре стек и куча используют одно и то же логическое адресное пространство, поэтому без разницы, где вы будете выделять память, в стеке или в куче -- если память исчерпывается, она исчерпывается как для стека, так и для кучи. А выделять локальную память в стеке быстрее и удобнее.
| |
|
|
|
|
5.22, asdasd (?), 20:16, 21/03/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
Тогда почему:
> Ядро уже им конпелируется?
>> Да, после того как VLA (Variable Length Arrays) из ядра убрали.
>>> VLA
>>>>Полезная штука, кстати. Жаль, что нет в стандарте ISO C. | |
|
|
|
|
3.32, Ordu (ok), 00:16, 23/03/2019 [^] [^^] [^^^] [ответить]
| +2 +/– |
Не поленился, собрал.
$ du arch/x86/boot/bzImage /usr/src/linux-4.14.83-gentoo/arch/x86/boot/bzImage
7316 arch/x86/boot/bzImage
7164 /usr/src/linux-4.14.83-gentoo/arch/x86/boot/bzImage
$ find . -name '*.ko' | xargs du -c | tail -n 1
4628 итого
$ find /usr/src/linux-4.14.83-gentoo/ -name '*.ko' | xargs du -c | tail -n 1
4504 итого
Тот что локально собран clang'ом, в /usr/src при помощи gcc. Вывод: clang делает жирнее, то эта дополнительная жирность 2-3%. Не тянет на "гораздо" ведь, не?
| |
|
|
1.19, iZEN (ok), 18:47, 21/03/2019 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– |
Для тех, кто желает использовать новый LLVM-8.0.0 совместно с Mesa-18.3.2 на FreeBSD, достаточно в /etc/make.conf задать следующие параметры:
DEFAULT_VERSIONS+=llvm=80
MESA_LLVM_VER=${LLVM_DEFAULT}
и перекомпилировать Mesa:
portmaster -gD mesa-
Должно оказаться что-то вроде такого:
% pkg info -r llvm80
llvm80-8.0.0:
mesa-dri-18.3.2_2
| |
|