初学C语言,关于用C语言实现动态数组求解惑
程序代码:
intArray iArray; intArray *pArray = &iArray; for (int32_t i = 0; i < time; i++) { intArray_add(pArray, i); }
这种使用结构体的方式测试时间为78ms,
程序代码:
intArray* iArray = malloc(sizeof(intArray)); for (int32_t i = 0; i < time; i++) { intArray_add(iArray, i); }
而这种使用方式测试时间为 93ms,为什么差距这么大?
另外还有这个add方法还可以优化不?,我和c#的List<T>.add 分别执行了一百万次,c#时间是23ms,但是我自己实现的时间为78ms
程序代码:
void intArray_capacity(intArray *iArray) { if (iArray->length >= iArray->capacity) { iArray->capacity *= 2; iArray->data = (int32_t *)realloc(iArray->data, sizeof(int32_t)* iArray->capacity); } } void intArray_add(intArray *iArray, int32_t data) { intArray_capacity(iArray); iArray->data[iArray->length++] = data; }