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

Методы оптимизации кода - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как сделать свою переменну в С++ http://www.cyberforum.ru/cpp-beginners/thread328357.html
Мне нужно подсчитывать очень большие числа, порядка 10^100000, и нужно создать свою переменную как можно это сделать?
C++ Работа в excel. срочно помогите срочно последнее задание по практике Идет k-я секунда суток (размещена в В10). Сколько полных часов h от 0 до 23 (в B11) полных минут m от 0 до 59 (в В12) и секунд s от 0 до 59 (в В13) прошло к этому времени. ---------------------------------------------------------------------------------------------------------- Для успешного решения задач необходимо ознакомиться с... http://www.cyberforum.ru/cpp-beginners/thread328355.html
C++ сервер с++
клиент - сервер работают если запушены на одном компе(127.0.0.1) у меня установлена виртуальная машина, попробовал на ней протестить - не соединяются. Virtualbox -> сетевой мост : реальная и виртуальные машины пингуют друг друга, в чем может быть проблема?! имя локальный адрес внешний адрес состояние TCP 0.0.0.0:135 0.0.0.0:0 LISTENING TCP 0.0.0.0:445 0.0.0.0:0 LISTENING ...
C++ Добавление и удаление элементов в середину списка
Доброго всем времени суток!! Есть прога добавления и удаления элементов в списке, из начала, конца. А вот с серединой что-то туговато.. Кто подскажет функцию добавления и удаления из середины списка? //обход списка #include<iostream> using namespace std; class Node { private: int data;
C++ Дан текст. файл, сост. из одной или нескольких строк.подскажите,как написать программу http://www.cyberforum.ru/cpp-beginners/thread328322.html
Дан текст. файл, сост. из одной или нескольких строк. Каждая строка файла содержит числа, разделенные пробелами. Из каждой строки файла удалить числа, предшествующие первому положительному чуслу. Если в строке нет положительных чисел, оставить её без изменения
C++ динамический 2-х мерный массив помогите плиз вот код , нужно составить динамический 2-х мерный массив double **a int n,m,l; scanf("%d%d",&n,&m); a=(double **) colloc (m,sizeof(double*)); for (i=0;i<m;i++) a=(double *) colloc(n,sizeof (double)) подробнее

Показать сообщение отдельно
FiloXSee
18 / 9 / 0
Регистрация: 01.07.2011
Сообщений: 25
29.12.2011, 15:10  [ТС]     Методы оптимизации кода
Цитата Сообщение от fasked Посмотреть сообщение
А во втором случае типа два раза?
Да. В первом случае переменная создается и инициализируется сразу значением (одна операция). Во втором случае переменная сначала создается, а затем идет присвоение ей значения (две операции). Это наиболее ощутимо, если эта переменная - класс. Тогда в первом случае вызовется только конструктор, а во втором конструктор и функция.


Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Но которые в коде гораздо менее понятны, чем исходный вариант.
Поэтому я и написал, что подобные вещи нужно применять тогда, когда это необходимо. Простой пример: есть статья как проводилась оптимизация в игре Uncharted2. Берется цикл, который выполняется за 280ms и реорганизацией кода + побитовыми операциями + разверткой цикла + векторизацией некоторых данных доводится до 34 милисекунд, а после переводится на асемблер и выполняется 7ms. Про асемблер я нечего не говорил, но и без него оптимизация в 8 раз. Понятно, что сразу такое не написать. Это была оптимизация уже конкретного кода под конкретную платформу.

Те приемы которые я описал это информация к сведению. Если вы столкнетесь, с необходимостью оптимизации, то статьи подскажет вам некоторые варианты реорганизации кода, которые могут помочь. Некоторые пункты в статьях подходят как best practice (вроде инициализации переменных класса в списке инициализации, а не в теле конструктора.


Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Посмотрел статьи. Выглядит как предположения программиста. Не подкрепленные ничем.
Да это так. Проблема в том, что я занимаюсь разработкой под разные платформы (PC, MacOsX, Ps3, Xbox360, iOs + есть еще SPU и шейдеры) и везде свои тонкости. То что компилятор оптимизирует в одном месте он не будет делать в другом. В статьях я собрал в виде списка рекомендаций приемы, которые помогали в различных ситуациях.

Добавлено через 9 минут
Цитата Сообщение от OstapBender Посмотреть сообщение
а можно вопрос , как в данном случае связаны передача параметров и возврат значения?
Синтаксис не имеет значения. Допустим вы планируете написать функцию, которая вам вернет некие данные. На этапе формулировки задачи не важно как она вернет, через параметр функции или через return. Эта рекомендация говорит, что если объем передаваемых данных больше чем 4 байте (тем более если намного больше) то лучше передать память по ссылке или указателю и заполнить ее, чем возвращать сами данные.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Вместо:
Struct GetData()
{
  Struct st;....
  return st;
}
 
Писать так:
void GetData( Struct& st ) // ну или по указателю передать
{
   st.value = ...;
   ...
}
 
Текущее время: 02:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru