Как написать более эффективный код - PullRequest
3 голосов
/ 27 августа 2010

Вопрос века? Я в основном хочу знать, что было бы более эффективно, если бы я написал этот код в виде нескольких разных переменных или если бы использовал маленькие массивы.

int x = 34;
int y = 28;
int z = 293;

против

double coordinate[3] = {34, 28, 293};

У меня есть структура координат, которую я буду использовать следующим образом:

typedef struct coordinates_t {
    double x = 0.0;
    double y = 0.0;
    double z = 0.0;

} coordinates;


typedef struct car_t {
    coordinates start; // car starting point
    coordinates location; // car current Location
    coordinates targCarVector; // Vector to car from target
    coordinates altitude; // Altitude of car
    coordinates distance; // Distance from car start to current position
} car;

Мне нужно будет сделать что-то вроде:

distance = car1.location - car1.start;

Если я не использую массив, у меня будет много строк кода, но если я буду использовать массив, мне придется использовать циклы. Являются ли массивы и циклы более интенсивной памятью / процессором? Я в основном пытаюсь понять, какой способ написания кода наиболее эффективен.

Спасибо, DemiSheep

Ответы [ 12 ]

0 голосов
/ 27 августа 2010

Пойдите для более правильного пути - который будет использовать циклы и массивы - ни один из которых не приведет к большему использованию памяти (меньшее использование, так как память, требуемая всеми этими командами car1, car2, car3 ... будет больше)- и с точки зрения использования процессора вы видите самые незначительные различия.

0 голосов
/ 27 августа 2010

Как всегда, вам нужно будет профилировать свой код, чтобы быть уверенным.

Сказав это, я бы предложил использовать массив и циклы - ваш код должен быть более лаконичным / поддерживаемым, а компилятор должен уметь хорошо оптимизировать / развернуть все маленькие циклы постоянного размера эффективно то, что вы бы делали вручную, если бы использовали координаты x, y, z для каждого вектора.

На совершенно не связанной ноте я вижу, что у вашей машины есть высота. Это летающая машина? Если так, то определенно +1 за классное приложение.

...