Форум программистов, компьютерный форум, киберфорум
Наши страницы

Соптимизирует ли (любой) компилятор такой код? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Решение задачи на С++ с техстовыми файлами http://www.cyberforum.ru/cpp-beginners/thread656852.html
Помогите решить задачу. Даны два входных текстовых файла. Сформируйте выходной файл, вставив в первый входной файл содержимое второго входного файла с указанной позиции. Если вставка невозможна,...
C++ Построение односвязного списка Имеется следующая функция считывающая структуру из файла и создающая односвязный список. Проблема в том, что если в файле > 1 э-та - список строиться не правильно. Т.е первый э-т правильно встаёт... http://www.cyberforum.ru/cpp-beginners/thread656847.html
C++ Поиск подстроки в строке с русскими и английскими буквами. strstr() не справляется
Писал программку для отправки в инвиз окна, не работает поиск окна по заголовку, если в заголовке есть русские буквы. Пробовал разные комбинации AnsiToChar(), CharToAnsi(), CharToOem(), SetLocale() -...
Освобождение и выделение памяти C++
Помогите разобраться с программой, где здесь выделение памяти (как я понял это new) и где освобождение памяти. #include <iostream> #include <conio.h> using namespace std; struct train {...
C++ Работа с файлами. С++ http://www.cyberforum.ru/cpp-beginners/thread656832.html
Доброго времени суток. В программировании полный ноль. Мог бы мне кто нибудь, объяснить как вывести из файла определенную (часть из общей) информацию и записать ее в отдельный. То есть есть...
C++ вещественный массив Здравствуйте возникла проблема, как сделать массив с вещественными числами, заменяя на float и double возникают ошибки,помогите разобраться #include "stdafx.h" #include"iostream"... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
18370 / 6417 / 441
Регистрация: 30.03.2009
Сообщений: 17,803
Записей в блоге: 28
24.09.2012, 09:15
Цитата Сообщение от #pragma Посмотреть сообщение
иначе зачем тогда лексические блоки
Когда изобретали язык Си, в первую очередь заботились о производительности кода, а не о красоте его написания. Компиляторы в те времена были очень слабые (т.к. памяти было мало), а потому возможность ограничивать время жизни переменной диктовалось в первую очередь попытками ручных "указаний" компилятору о том, что и где можно сэкономить

Добавлено через 26 минут
Цитата Сообщение от Evg Посмотреть сообщение
Если время жизни переменной реально ограничивается каким-то лексическим блоком, то переменную лучше объявить в блоке
Но при этом надо учитывать следующее. Если мы работаем с переменной типа "класс" или "структура" в Си++, то надо учитывать, как работают конструктор и деструктор. Потому как для переменной, созданной внутри лексического блока, конструктор будет вызываться, грубо говоря, при каждом достижении открывающей фигурной скобки, а деструктор - при каждом достижении закрывающей фигурной скобки. Таким образом, если мы поместим такую переменную вовнутрь цикла из 100 итераций, то у нас 100 раз вызовется конструктор и 100 раз деструктор. Если конструктор и деструктор представляют собой inline-реализации которые тупо модифицируют значения полей (типа обнуляют или что-то ещё), то это не страшно, т.к. компилятор в процессе оптимизаций всё равно лишнее выкинет. Типа если в конструкторе обнуляли поле класса, а затем в коде в это поле мы что-то записывали, то код по обнулению поля компилятор выкинет за ненадобностью, т.к. мы всё равно после этого что-то другое записываем. Но вот если в конструкторе идёт формирование динамических массивов, а в деструкторе - их освобождение, то затаскивание переменной вовнутрь цикла может существенно программу замедлить
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.