【发布时间】:2011-04-04 22:30:36
【问题描述】:
世纪问题?我基本上想知道如果我将这段代码写成几个不同的变量或者我使用小数组,哪个会更有效。
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;
如果我不使用数组,我将不得不有很多代码行,但如果我使用数组,我将不得不使用循环。数组和循环是否更占用内存/cpu?我基本上是想看看哪种方法是编写此代码的最有效方式。
谢谢, 半羊
【问题讨论】:
-
Benchmarks benchmarks 基准测试!
-
@Daenyth - 准点!或者,在你拥有你的应用程序之前,甚至不要打扰基准测试。写和“它很慢” - 然后优化发生缓慢的几个地方并完成。通常不必过多担心前期的效率——您很少能预料到程序中真正缓慢的部分会在哪里——也不值得在很多时候额外考虑。
-
我同意 Benchmarks 的评论,但同时,我对此事的看法是变数。最好有一些东西来说明它被抓住了什么。例如,您的坐标[] 数组可能是 x、y、z,但其他人可能认为它们是 z、y、x。有变量 x、y 和 z,就不会有混淆。
-
我的怀疑是,由于结构在内部(或多或少)只是数组,因此在进入中间表示后不会产生最微弱的区别。
-
上个世纪的问题。
标签: c performance premature-optimization