С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
78 / 40 / 24
Регистрация: 03.02.2017
Сообщений: 112
1

Оптимизация кода. Переменные в цикле

04.05.2017, 16:50. Показов 649. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Рассматривая свой ранее написанный код и думая, что можно улучшить, задался следующим теоретическим вопросом.
Пользователь вводит данные в цикле, которые сохраняются во временную переменную, а затем помещаются в контейнер.

Вариант 1. Плох тем, что переменная продолжает существовать после завершения цикла, занимая память.
C++
1
2
3
4
5
int buffer;
for (int i = 0; i < size; i++) {
    cin >> buffer;
    myVector.push_back(buffer);
}
Вариант 2. Плох тем, что переменная создается и уничтожается на каждой итерации цикла, занимая время.
C++
1
2
3
4
5
for (int i = 0; i < size; i++) {
    int buffer;
    cin >> buffer;
    myVector.push_back(buffer);
}
Вариант 3. Решает проблемы первых двух вариантов. НО, на самом деле в моем коде, этих переменных две, они имеют осмысленные названия и разные типы, и добавление их в скобки удлиняет содержимое скобок раза в два и уменьшает читаемость кода. Одна из них, типа string, вообще отказалась стоять в скобках - я не стал разбираться.
C++
1
2
3
4
for (int i = 0, int buffer; i < size; i++) {
    cin >> buffer;
    myVector.push_back(buffer);
}
И вариант 4. Он, как мне кажется, решает все три проблемы.
C++
1
2
3
4
5
for (int i = 0; i < size; i++) {
    static int buffer;
    cin >> buffer;
    myVector.push_back(buffer);
}
Вопрос. Действительно ли 4-й вариант эквивалентен 3-му по эффективности. Или может в цикле, несмотря на static, переменная будет каждый раз уничтожаться и создаваться заново? Или еще что-то чего я не знаю!?

Если что, то вот тот код,
строки 27 - 39.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2017, 16:50
Ответы с готовыми решениями:

Оптимизация методом Ньютона (нахождение точки минимума). Оптимизация кода
MATLAB только начал осваивать. Попытался реализовать нахождение точки минимума методом Ньютона...

Оптимизация кода. Замер времени выполнения части кода.
Доброе утро. Есть желание посмотреть сколько времени занимает выполнение какого-то блока...

Parallel.For в цикле. Оптимизация
Всем шалом! Как оптимизировать данный цикл? while (update(Combos)) Parallel.For(0,...

Переменные в цикле for
Написал код для задачки, но возникла проблема (место помечено в коде) - после первого цикла for...

2
Эксперт С++
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.05.2017, 16:56 2
Цитата Сообщение от Mohan Посмотреть сообщение
Плох тем, что переменная создается и уничтожается на каждой итерации цикла, занимая время.
забить, и не париться.
ничего там там не создаётся и не уничтожается.
и время тоже не занимает.

Цитата Сообщение от Mohan Посмотреть сообщение
И вариант 4. Он, как мне кажется, решает все три проблемы.
ключевое слово "кажется".
эта переменная теперь будет жить до конца программы.
и соответственно - занимать память.
1
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
04.05.2017, 17:28 3
Всё ваши размышления могли быть справедливы для компиляторов допотопных времён (и то не факт). Сейчас же компиляторы умеют всё это дело оптимизировать. Если очень интересно, можете посмотреть выхлоп ассемблера и убедиться в этом. Вы занимаетесь именно "преждевременной оптимизацией" и дядюшка Кнут вас за это покарает.

Добавлено через 1 минуту
P.S. 3 вариант не скомпилируется, нужно второй int убрать.
1
04.05.2017, 17:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2017, 17:28
Помогаю со студенческими работами здесь

Две переменные в цикле
Есть 3 папки: 1 - папка с исходными файлами 2 - папка с исходными файлами 3 - папка с выходными...

Не очищается переменные в цикле
Добрый день. Есть вот такой скрипт вывода графиков, но загвоздка в том, что он выводит только...

Перебрать переменные в цикле
Нужно перебрать переменные в цикле. Например, double1, double2, double3, double4 и т.д. И вот...

Переменные в цикле не определяются
Доброго времени суток. Пишу прогу на метод наименьших квадратов, вроде все норм, но переменные Syy,...

Оптимизация запросов. Запросы в цикле - зло
Здравствуйте. При написании скрипта столкнулся с проблемой выборки по циклу. Скрипт работает очень...

Оптимизация запроса БД в цикле, сравнение массивов
Всем привет! У меня есть некий код - цикл в цикле, второй цикл ссылается на значение из первого. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru