@EnamoredBird

Как оптимизировать программу на с++?

Есть простая программа на с++, ее суть заключается в том, чтобы прибавить к числу 1 и умножить число на самого себя. Однако, ее время исполнения - 2 ms, но я знаю, что можно сократить к 1 ms. Какими способами это можно сделать?
#include

int main()
{

int N;
scanf("%d",&N);
N++;
N *= N;
printf("%u",N);


return 0;
}
  • Вопрос задан
  • 359 просмотров
Пригласить эксперта
Ответы на вопрос 7
@Got_Oxidus
Учусь
Вместо "%u" "%d" пробовали? ИМХО, это избавит от привидение типов из int в unsigned int, а это минус операция.
Ответ написан
Комментировать
UPD.:
Можно попробовать принимать N как аргумент, через argv[]
Ответ написан
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
printf относительно медленная штука. Очень бросается в глаза на слабом железе, если выводить очень много.

p.s.

Строго говоря, постановка задачи не требует что-либо куда-либо выводить и вообще что-либо делать с полученным результатом.
Ответ написан
@Wexter
на SO говорят, что если использовать iostream с отключенной синхронизацией вместо stdio, можно получить небольшой прирост
stackoverflow.com/questions/1042110/using-scanf-in...
Ответ написан
Комментировать
@asd111
Попробуй cin и cout вместо scanf и printf. Только не забудь добавить std::ios::sync_with_stdio(false);
Т.е. так
#include <iostream>


int main()
{
std::ios::sync_with_stdio(false);
int N;
std::cin >> N;
N++;
N *= N;
std::cout << N;


return 0;
}
Ответ написан
@abcd0x00
Замени это:
int N;
scanf("%d",&N);
N++;
N *= N;
printf("%u",N);


На это:
int n;

scanf("%d", &n);
n = (n + 1) * (n + 1);
printf("%d", n);
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Само решение задачи оптимизировать бесполезно, т.к. тут на столько все просто, что любые оптимизации дадут прирост в 1-2 процессорных инструкции, а это в любом случае будет меньше 1 млсек.
Попробуйте исполнить ваш тест несколько раз и вычислить среднее время, если это возможно.
Или вставьте в свою программу вычисление времени выполнения и больше не беспокойтесь по этому поводу: www.cplusplus.com/reference/ctime/clock/?kw=clock
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы