为C Struct分配更多空间以提高性能?

时间:2015-10-20 19:39:50

标签: c optimization memory-management

我正在研究一些需要我创建类似于

的结构的东西
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进一步改进。

这是否可以提高数据处理繁重程序的性能?

0 个答案:

没有答案