标题:初学C语言,关于用C语言实现动态数组求解惑
取消只看楼主
CodeSuperHer
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-5-27
 问题点数:0 回复次数:0 
初学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;
        }
    
搜索更多相关主题的帖子: C语言 结构体 动态 
2015-05-27 02:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-445822-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.126697 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved