|
179 / 127 / 25
Регистрация: 12.01.2012
Сообщений: 623
|
|
Насколько критично обьявление переменной в теле цикла?28.08.2012, 17:23. Показов 6167. Ответов 66
Метки оптимизация (Все метки)
Часто приходится иметь дело с циклами в которых используются некоторые специфичные вспомагательные перменные, которые нужны только внутри цикла. Вопрос: как сказывается объявление переменных внутри тела цикла на производительность?
0
|
|
| 28.08.2012, 17:23 | |
|
Ответы с готовыми решениями:
66
[C++] объявление переменных в теле цикла В теле цикла for, переменной не присваивается значение
|
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||||||||||||
| 28.08.2012, 22:37 | ||||||||||||
0
|
||||||||||||
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
||
| 28.08.2012, 22:37 | ||
|
0
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||
| 28.08.2012, 22:42 | ||
|
0
|
||
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
| 28.08.2012, 22:44 | |
|
Я точно так же не вижу смысла делать за компилятор его работу. Это его головная боль выяснять инварианты цикла.
1
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 28.08.2012, 22:50 | |
|
С какой стати он вообще должен это делать с пользовательскими типами? Компилятор делает определенные оптимизации, но не стоит все вешать на него. Я не говорю, что стоит пытаться быть умнее компилятора, но и возлагать на него все тоже не стоит. Я приводил пример, где объект пользовательского типа данных создавался и уничтожался на каждой итерации, причем я это проверял на GCC с флагом -O3.
0
|
|
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
| 29.08.2012, 03:04 | |
|
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 29.08.2012, 11:07 | |
|
Ничего верного. Вот из-за такого мышления и восприятия за "спички" вещей, которые такими не являются, и взваливания все на компилятор, современный софт способен поставить на колени любую современную машину, при этом не делая ничего особенного.
0
|
|
|
Супер-модератор
|
|||
| 29.08.2012, 12:22 | |||
|
0
|
|||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||||||||||||
| 29.08.2012, 12:40 | ||||||||||||
|
Пожалуйста:
1
|
||||||||||||
|
Супер-модератор
|
||
| 29.08.2012, 12:51 | ||
|
Так у Вас в первом коде 100000 раз создается вектор... Понятно, что это менее производительно. Но вопрос-то был про переменную int (которая создается без вызова конструктора). Не думаю, что в этом случае снижение производительности было бы столь заметным.
Добавлено через 2 минуты
0
|
||
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
||
| 29.08.2012, 12:53 | ||
|
2
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||||
| 30.08.2012, 18:19 | ||||
|
Я лишь показал своим примером то, что выделенная память для vector, не освобождается и не перевыделяется на каждой итерации цикла. Тоже самое может быть в классе ParsedFile. Память не будет постоянно освобождаться и выделятся. Только конечно если следующий объект не будет больше, чем предыдущий. Выделение и освобождение памяти слишком ресурсозатратны, что бы их называть спичками. И опять же вопрос второй раз - с чего Вы вообще взяли, что компилятор должен выносить за цикл объекты, определенные пользователем? Добавлено через 26 минут
0
|
||||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 30.08.2012, 18:24 | |
|
У тех же Дейтелов. Там была даже вроде схема; в начале функции объявляются и инициализируются, если необходимо, объекты, далее идет логика программы, выполняются необходимые действия, ну и в конце возвращается управление.
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 30.08.2012, 18:29 | |
|
В данный момент лень искать это в книге в полторы тысячи страниц.
0
|
|
|
|
|
| 30.08.2012, 18:31 | |
|
тем более... как я найду там то о чем вы пишите...
0
|
|
| 30.08.2012, 18:31 | |
|
Как в теле цикла поменять значение переменной из условия?
Насколько критично в плане безопасности использование SSL при POST запросах? Ошибок парковок очень много (осталась одна красная по Виктоории), а СМАРТ - гуд. Насколько критично?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|