Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Первые опыты в C++, анализ кода  
:(
    Опции темы
GrayCardinal
Дата 7.11.2007, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 2
Всего: 58



Цитата

Переменная должна быть как можно ближе к месту первого использования, а ещё лучше, если это возможно обернуть место её использования в отдельный scope.

Это откуда ?


--------------------
PM MAIL WWW   Вверх
zkv
Дата 7.11.2007, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(GrayCardinal @  7.11.2007,  09:27 Найти цитируемый пост)
Это откуда ? 

вроде Страуструп так говорил. 
Да и вообще прописная истина...
PM MAIL   Вверх
GrayCardinal
Дата 7.11.2007, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 2
Всего: 58



zkv, 
Вот
 это для меня прописные истины  smile

Добавлено через 1 минуту и 11 секунд
Цитата

что (a) K&R _правы_, а так же что (б) K&R правы.



--------------------
PM MAIL WWW   Вверх
zkv
Дата 7.11.2007, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(GrayCardinal @  7.11.2007,  10:47 Найти цитируемый пост)
Вот
 это для меня прописные истины

учитывая что в ссылке обсуждается Си, а мы говорим о С++, аргумент не очень убедителен. 
 smile 
PM MAIL   Вверх
GrayCardinal
Дата 7.11.2007, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 2
Всего: 58



zkv, 
Уел таки smile


--------------------
PM MAIL WWW   Вверх
archimed7592
Дата 7.11.2007, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(GrayCardinal @  7.11.2007,  09:27 Найти цитируемый пост)
Это откуда ? 

Мейрс.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
GrayCardinal
Дата 7.11.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 2
Всего: 58



archimed7592, 
Может линк есть ? А то как-то неубедительно  smile 


--------------------
PM MAIL WWW   Вверх
archimed7592
Дата 7.11.2007, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



35 правил, оч известная книга.

Добавлено через 38 секунд
Номер главы не скажу, ибо сейчас у меня её под рукой нет.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
MAKCim
Дата 7.11.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



archimed7592, 
zkv, 
можно подробнее об этом
я ничего такого не читал
единственное для меня объяснение - это кэширование, т. е чем дальше определение переменной от точки использования, тем больше вероятность того, что данные, которые соответствуют переменной, не будут находится в кэше CPU

Это сообщение отредактировал(а) MAKCim - 7.11.2007, 11:44


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
archimed7592
Дата 7.11.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



MAKCim, преждевременная оптимизация - корень всех зол smile.
Кэш тут не при чём.
Во-первых, сразу видно предназначение переменной, когда читаешь. Во-вторых, сужается её scope. В-третьих, раз уж мы заговорили про оптимизацию - компилятор всё равно выделит место в стеке под все нужные переменные в начале ф-ции, но, ему будет проще оптимизировать, когда он будет знать, что данная переменная фигурирует здесь(в данном scope) и не фигурирует нигде больше.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
zkv
Дата 7.11.2007, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



MAKCim, ты рассматриваешь все только с точки зрения оптимизации
принцип совета тот же, что и в совете избегать глобальных переменных по возможности.
ведь можно отказаться от локальных переменных вообще, использовать только глобальные (забудем на время где там что храниться будет, смотрим только с точки зрения прозрачности кода) - нелегко будет разбирать такую программу.
Это утрированный пример, но тенденция понятна, наверное?
PM MAIL   Вверх
SaDFromSpb
Дата 7.11.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 3



Цитата(GrayCardinal @  7.11.2007,  10:47 Найти цитируемый пост)
 это для меня прописные истины 

Вот скажи, а ядро Линуха до сих пор на си пишется? Там, типа, ООП не нужно?
Совершенно без иронии, просто интересно. А ссылка с этими истинами, у меня не открывается что-то...



--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
MAKCim
Дата 7.11.2007, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(archimed7592 @  7.11.2007,  11:47 Найти цитируемый пост)
но, ему будет проще оптимизировать, когда он будет знать, что данная переменная фигурирует здесь(в данном scope) и не фигурирует нигде больше. 

как это соотносится с этим
Цитата(archimed7592 @  7.11.2007,  11:47 Найти цитируемый пост)
компилятор всё равно выделит место в стеке под все нужные переменные в начале ф-ции

?
EBP не меняется в пределах функции, так что, имхо, все равно, откуда обращаться к локальной переменной
Цитата(zkv @  7.11.2007,  11:56 Найти цитируемый пост)
Это утрированный пример, но тенденция понятна, наверное?

аналогия с глобальными переменными не уместна, имхо
тогда уж и "разбрасывание" переменных по всему телу функции надо исключать
Цитата(archimed7592 @  7.11.2007,  11:47 Найти цитируемый пост)
Кэш тут не при чём.

немного все же причем  smile

Добавлено через 3 минуты и 44 секунды
Цитата(SaDFromSpb @  7.11.2007,  12:21 Найти цитируемый пост)
Вот скажи, а ядро Линуха до сих пор на си пишется? Там, типа, ООП не нужно?

пишется на С
ООП - это синтаксический сахар в синтаксисе ЯВУ
в общем случае он усложняет выходной код (соответственно, снижая его производительность), что неприемлемо для разработки ядра
классы вполне заменяются структурами, методы - функциями, наследование - агрегированием, полиморфизм - ничем в виду его ненужности


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
archimed7592
Дата 7.11.2007, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(MAKCim @  7.11.2007,  12:36 Найти цитируемый пост)
как это соотносится с этим

К примеру, если scope ограничен, он может вообще воспользоваться регистрами.

Потом возьми умные объекты. mutex к примеру. Если ты сделаешь его в начале ф-ции, то всё время работы ф-ции мьютекс будет залочен, если же заключить его в тот scope в котором он реально нужен, то повысится эффективность.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
MAKCim
Дата 7.11.2007, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(archimed7592 @  7.11.2007,  12:40 Найти цитируемый пост)
Потом возьми умные объекты. mutex к примеру. Если ты сделаешь его в начале ф-ции, то всё время работы ф-ции мьютекс будет залочен, если же заключить его в тот scope в котором он реально нужен, то повысится эффективность. 

мы говорим о расположении локальных переменных
а лочить можно где угодно


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0565 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.