реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Возврат структуры, Чисто теоретический вопрос...
AHTOXA
сообщение Jun 4 2009, 12:08
Сообщение #16


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(demiurg_spb @ Jun 4 2009, 17:32) *
Мне действительно нужна реентерабельность функции и в тоже время логичность и простота...
Тогда получается что во втором варианте компилятор поступает неразумно, опять выделяет место на стеке под локальную переменную, вместо того, чтобы сразу использовать область памяти полученную через указатель скрытым аргументом. Опять обидно... Может есть способ обойти это?


Способ естьsmile.gif Немножко пожертвовать простотой, объявлять массив в стеке вызывающей функции самому, и указатель на него передавать в dffs_get_page_start_time. Тогда компилятор уже точно никуда не денется и сделает всё как надоsmile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 4 2009, 12:17
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(AHTOXA @ Jun 4 2009, 15:08) *
Способ естьsmile.gif Немножко пожертвовать простотой, объявлять массив в стеке вызывающей функции самому, и указатель на него передавать в dffs_get_page_start_time. Тогда компилятор уже точно никуда не денется и сделает всё как надоsmile.gif


Только в том случае, если этот массив нужен в вызывающей функции и более нигде.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jun 4 2009, 15:02
Сообщение #18


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(sergeeff @ Jun 4 2009, 09:06) *
Чем быстрее вы поймете неэффективность такого подхода, тем лучше будет для вашей будущей деятельности. Почитайте про ухищрения современных С++ компиляторов (RVO), оптимизирующих возврат объектов из функции (структура - тоже объект) : http://en.wikipedia.org/wiki/Return_value_optimization.
Я очень рад, что Вас волнует моя "будущая деятельность", но нельзя ли уточнить -
что такого я должен был в википедии вычитать? И неэффективность чего понять?

Что при возврате структуры компилятор порождает скрытые аргументы-указатели у функции и производит копирование временных объектов? Так я сам об этом написал в первом моём сообщении в этой теме, как мне "понять" то, что я давно понимаю? Забыть сначала?

Что эффективнее явно передавать указатель на объект и заполнять прямо его - так и об этом я написал (и так обычно и делаю).

Что компиляторы пытаются оптимизировать этот процесс и уходить от "i like to move it move it", но у них это не всегда может получиться? А то это непонятно.

Ну а возврат объекта - он может и неэффективен с точки зрения генерируемого кода, зато эффективен с точки зрения чтения исходного текста программы, и потому автор темы хотел его использвать.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 4 2009, 15:16
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Я лично очень рад, что вам все понятно. Зачем тогда вопросы задавать? Тем более, что вам все равно больше по душе писать не быстрые и правильные программы, а "красивые", исключительно с вашей точки зрения. Ну и флаг вам в руки!
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jun 4 2009, 15:47
Сообщение #20


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(sergeeff @ Jun 4 2009, 18:16) *
Я лично очень рад, что вам все понятно. Зачем тогда вопросы задавать? Тем более, что вам все равно больше по душе писать не быстрые и правильные программы, а "красивые", исключительно с вашей точки зрения.

Какие вопросы? Я в этой теме отвечал, а не спрашивал. Или Вы имеете ввиду вопросы Вам? Ну да, мне непонятно - толи Вы не читали моё первое сообщение в этой теме, толи я чего-то недосмотрел в той статье на википедии.
А что мне по душе - так Вы ещё и экстрасенс? Уникум?


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 4 2009, 16:17
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(ReAl @ Jun 4 2009, 18:47) *
Какие вопросы? Я в этой теме отвечал, а не спрашивал. Или Вы имеете ввиду вопросы Вам? Ну да, мне непонятно - толи Вы не читали моё первое сообщение в этой теме, толи я чего-то недосмотрел в той статье на википедии.
А что мне по душе - так Вы ещё и экстрасенс? Уникум?


Не обессудьте сударь! По ходу дискуссии я вас попутал с автором топика.

А вопрос о "красивости" он понимается по-разному. Мне представляется красивым код, который, прежде всего быстр и надежен. Но это дело вкуса.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jun 6 2009, 16:08
Сообщение #22


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(demiurg_spb @ Jun 4 2009, 14:32) *
...размер возвращаемого параметра при котором он будет передан не через регистры а через стек. Мне действительно нужна реентерабельность функции ...

Уже проясняли этот вопрос: реентерабельность не зависит от того, каким макаком передали параметры- через регистры или через стек. Потому что при переключении процессов регистры ведь сохраняются...
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 7 2009, 16:44
Сообщение #23


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(_Pasha @ Jun 6 2009, 20:08) *
Уже проясняли этот вопрос: реентерабельность не зависит от того, каким макаком передали параметры- через регистры или через стек. Потому что при переключении процессов регистры ведь сохраняются...
Спасибо я это понимаю. Вопрос был навеян лицезрением asm-листинга с нехилым оверхедом, и ещё большим в случае передачи параметров через регистры, как это не странно звучит... Похоже этот момент в сишном gcc компиляторе совсем плохо оптимизируется, надо глянуть, что будет с плюсами. И если там будет красота, то видимо надо будет потихонечку да полегонечку переползать на него...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 22:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01432 секунд с 7
ELECTRONIX ©2004-2016