Форум программистов, компьютерный форум CyberForum.ru

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

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

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,136
Записей в блоге: 26
24.09.2012, 09:15     Соптимизирует ли (любой) компилятор такой код?
Цитата Сообщение от #pragma Посмотреть сообщение
иначе зачем тогда лексические блоки
Когда изобретали язык Си, в первую очередь заботились о производительности кода, а не о красоте его написания. Компиляторы в те времена были очень слабые (т.к. памяти было мало), а потому возможность ограничивать время жизни переменной диктовалось в первую очередь попытками ручных "указаний" компилятору о том, что и где можно сэкономить

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