The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз ядра Linux 4.20, opennews (??), 24-Дек-18, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


111. "Релиз ядра Linux 4.20"  +/
Сообщение от X4asd (ok), 24-Дек-18, 14:52 
> 2. Мы вместо высокоэффективных аллокаций на стеке (которые при правильном компиляторе добавляют только одну ассемблерную инструкцию к сгенерированному коду) будем аллоцироваться в куче, что добавляет туеву хучу инструкций.

а почему и дальше нельзя аллоцировать на стеке? но без VLA. через __builtin_alloca() .

(ответ я подозреваю: "можно но всё равно это уже не будет также дёшево как это было с VLA" .. но на всякий случай спросил :-))

Ответить | Правка | К родителю #109 | Наверх | Cообщить модератору

142. "Релиз ядра Linux 4.20"  +1 +/
Сообщение от Аноним (137), 24-Дек-18, 17:51 
> а почему и дальше нельзя аллоцировать на стеке?
> но без VLA. через __builtin_alloca() .
> (ответ я подозреваю: "можно но всё равно это
> уже не будет также дёшево как это было с VLA"

Дешевле из-за отсуствия выравнивания?
Вот такие два варианта транслируются в идентичный код:


#include <stdio.h>

int s1(unsigned n) {
    void *p = __builtin_alloca_with_align(n * __BIGGEST_ALIGNMENT__, __BIGGEST_ALIGNMENT__);
    printf("%p", p);
}

int s2(unsigned n) {
    char a[n * __BIGGEST_ALIGNMENT__];
    printf("%p", a);
}


Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру