我正在研究一些需要我创建类似于
的结构的东西typedef struct vector {
int dimension;
double* data;
} Vctr;
我认为,如果我可以将数据存储在与分配的向量相同的区域中,那么访问成员数据,数据可能会更快,所以我决定尝试
// replaces vector->data[i]
#define data(name, x) *( ( double* )name + sizeof( int ) + sizeof( double ) )
typedef struct vector {
int dim;
double* data;
} Vctr;
Vctr* vMake( double* data, int dim )
{
assert( dim > 0 );
// Allocating enough space for vector and the data member
Vctr* retVal = malloc( sizeof( Vctr ) + (size_t)(dim - 1) * sizeof( double ) );
retVal->dim = dim;
// copy data into the vector
while( dim ) data( retVal, --dim ) = data[dim];
return retVal;
}
我编写了宏数据(名称,x),希望它也可以根据函数vMake进一步改进。
这是否可以提高数据处理繁重程序的性能?