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

Как сделать компактный код ? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Напишите функцию сортировки, похожую на функцию которая использовалась для сортировки массивов, с той разницей, что ее а http://www.cyberforum.ru/cpp-beginners/thread1134806.html
Напишите функцию сортировки, похожую на функцию которая использовалась для сортировки массивов, с той разницей, что ее аргументом должен быть вектор, содержащий числа типа int, а не массив. Этой функции не нужен параметр, подобный параметру numberused функции, поскольку количество используемых элементов вектора всегда можно узнать с помощью его функции-члена size(). У вашей функции сортировки...
C++ Напишите программу, считывающую строку текста и заменяющую все четырехбуквенные слова словом "love" Напишите программу, считывающую строку текста и заменяющую все четырехбуквенные слова словом "love". Например, для входной строки I hate you, you dodo! программа должна вывести следующее: I love you, you love! Конечно, результат часто будет получаться бессмысленным. Так, для входной строки John will run home. будет выведено: Love love run love. Если четырехбуквенное слово начинается с... http://www.cyberforum.ru/cpp-beginners/thread1134804.html
Форматный ввод/вывод: имя, второе имя или инициал, фамилия C++
Напишите программу, считывающую имя человека в таком формате: имя, второе имя или инициал, фамилия. Затем программа выводит имя в следующем формате: Фамилия. Имя Инициал. Например, для введенной строки Магу Average User программа должна вывести следующее: User, Mary А. А для ввода Mary A. User она должна вывести User, Mary А.
C++ Решение системы нелинейных уравнений
найти решения уравнения графическим методом и методом поиска решений {cos(y+0,5)+x=0,8; { sinx-2y=1,6. P.S. только там скобка одна,общая
C++ Вместо массива выводит большие отрицательные чсила http://www.cyberforum.ru/cpp-beginners/thread1134774.html
Доброго времени суток! Создан массив в классе (вроде все верно) вот только выводит не тот массив который требуется: #include "stdafx.h" #include <iostream> #include <math.h> #include <time.h> using namespace std; class array {
C++ Ввод данных в List Добрый день! Только начал пытаться писать на c++. У меня есть простая задача ввода, обработки данных. У меня есть функция в которой я считаю количество элементов, которые меньше 5. Мне нужно как то эти элементы ввести в формате short в диапазоне от -100 до 100, чтобы в функции их сравнивать и посчитать кол-во. Источник данных должен быть файл. Создал Win32 application. Вот функция : ... подробнее

Показать сообщение отдельно
DrOffset
6418 / 3792 / 876
Регистрация: 30.01.2014
Сообщений: 6,578
31.03.2014, 16:28     Как сделать компактный код ?
Цитата Сообщение от Тамика Посмотреть сообщение
Экономия памяти. Вместо создания копий, туда придет именно переменная, которую передали в функцию.
Вот именно про такие мифы я и говорил.
Ведь никакой экономии здесь не будет. Возможно будет даже расход!
Давай разбираться. sizeof(int) на 32-битной x86 в win равен 4, sizeof(int*) тоже равен 4. Экономии нет. Зато добавляется (возможное) разыменование.
Однако на x64 - sizeof(int *) == 8, а sizeof(int) все еще 4. а вот и расход.
Но это все теория. А теперь к практике:
Рассмотрим такие варианты:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int test1(int a, int b)
{
    return a + b;
}
 
int test2(int const & a, int const & b)
{
    return a + b;
}
 
int main()
{
    test1(1, 2);
    test2(1, 2);
    return 0;
}
А вот что получилось:
Assembler
1
2
3
4
5
6
7
8
9
10
test1:
    mov eax, DWORD PTR [esp+8]
    add eax, DWORD PTR [esp+4]
    ret
test2:
    mov eax, DWORD PTR [esp+4]
    mov edx, DWORD PTR [esp+8]
    mov eax, DWORD PTR [eax]
    add eax, DWORD PTR [edx]
    ret
Что-то не очень похоже на экономию, правда? Ссылки имеют место только для сложных и тяжелых типов.

Добавлено через 6 минут
Добавлю еще, что я специально написал пример так, что запретить компилятору встраивать функции. Если бы он это сделал, то оба варианты были бы абсолютно одинаковы.
 
Текущее время: 11:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru