Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Что будет быстрее выполняться ?? C++

  • Автор темы Автор темы Shoukox
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Мар 2019
Сообщения
66
Реакции
2
Я наверное дэбил, но что будет выполняться быстрее?
for(int i=0; i<64; i++)
{
c++;
]
или
for(int i=0; i<1; i++)
{
c++;
c++;
c++;
и так еще повторять 61 раз...
]
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
будет выполняться с той же скоростью, просто в первом примере ты сократил код.
 
Я наверное дэбил, но что будет выполняться быстрее?
for(int i=0; i<64; i++)
{
c++;
]
или
for(int i=0; i<1; i++)
{
c++;
c++;
c++;
и так еще повторять 61 раз...
]
Метка, переход к метке (выполнится 64 раза), условие (выполнится 64 раза), одно присваивание (выполнится 64 раза), а их 2 + создание 4-ех байтовой переменной в начале функции. Не помню точные размеры, но в основе, по 1 байту у инструкций будет (не помню у каких по 2).
64 на присваивание i, 64 на присваивание с. Условие выполнится 64 раза, и 64 раза переход к метки. В общем, где-то в 4 раза больше операций, но это с данным примером, так-как кода внутри цикла кот наплакал, обычно эти ~(256 + 5) байт ничтожны и ничего не решают.

Если просто присваивать, то, конечно, будет быстрее 64 раза ввести c++, но сейчас это ничтожные цифры, процессоры выполняют колоссальное количество инструкций в секунду, это во-первых, а во-вторых, зачем тебе во 2-ом варианте цикл, компилятор его просто вырежет, скорее всего, так-как цикл не работает, код внутри выполнятся 1 раз
If ( i < 1)
{
...
i++
}
Условие выполняется 1 раз, цикла по сути нет.
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Метка, переход к метке (выполнится 64 раза), условие (выполнится 64 раза), одно присваивание (выполнится 64 раза), а их 2 + создание 4-ех байтовой переменной в начале функции. Не помню точные размеры, но в основе, по 1 байту у инструкций будет (не помню у каких по 2).
64 на присваивание i, 64 на присваивание с. Условие выполнится 64 раза, и 64 раза переход к метки. В общем, где-то в 4 раза больше операций, но это с данным примером, так-как кода внутри цикла кот наплакал, обычно эти ~(256 + 5) байт ничтожны и ничего не решают.

Если просто присваивать, то, конечно, будет быстрее 64 раза ввести c++
а в чем разница? И то и то будет выполняться с той же скоростью или я что-то путаю?
 
а в чем разница? И то и то будет выполняться с той же скоростью или я что-то путаю?
прост во втором способе нету по сути цикла , а просто приплюсовывание
 
а в чем разница? И то и то будет выполняться с той же скоростью или я что-то путаю?
Хех, весь код переводится в ассемблерные инструкции, процессоры способны их выполнять миллиардами в 1 секунду. Я сейчас описал по-байтово каждую инструкцию, сколько инструкций уйдет на вариант с циклом и обычное присваивание. То есть, сколько байт в 1 и 2 варианте будет выполнено до конечного результата. Конечно, там в наносекундах уже идет измерение, но разница есть
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Хех, весь код переводится в ассемблерные инструкции, процессоры способны их выполнять миллиардами в 1 секунду. Я сейчас описал по-байтово каждую инструкцию, сколько инструкций уйдет на вариант с циклом и обычное присваивание. То есть, сколько байт в 1 и 2 варианте будет выполнено до конечного результата. Конечно, там в наносекундах уже идет измерение, но разница есть
Аа бля, понял, спасибо
 
Я наверное дэбил, но что будет выполняться быстрее?
for(int i=0; i<64; i++)
{
c++;
]
или
for(int i=0; i<1; i++)
{
c++;
c++;
c++;
и так еще повторять 61 раз...
]
это конечно все интересно, но C += 64; тебе религия написать не позволяет или как?
 
Если компилировать с оптимизацией, то по итогу в любом раскладе может получится простое c = 64 или c += 64, если же нет, то в принципе, второй вариант будет быстрее, так как после каждой итерации будут вызываться (привожу к асм-коду) sub и jnz. Кажется, ничего не забыл.
 
это конечно все интересно, но C += 64; тебе религия написать не позволяет или как?
Это просто для примера. Есть случаи, когда нужно именно по одному прибавлять))
 
Назад
Сверху Снизу