相关疑难解决方法(0)

NSArray怎么会这么慢?

我来自C++/STL世界,我想检查Objective-c容器与stl相比如何.

我想比较一个数字数组,但是添加一个数字的唯一方法NSArray是使用NSNumber,这是非常慢,并且我的ram空了,所以我想我需要手动解除它们.但我不想测试副作用,所以我只是添加[NSNull null]到数组中.

将10k内容添加到阵列1k次的结果:
NSArray- 0.923411秒
vector<int>- 0.129984秒

我认为它可能是分配和解除分配所以我将数组的数量(imax在代码中)设置为1和添加数量为10000000(jmax)但它甚至更慢
NSArray- 2.19859秒
vector<int>- 0.223471秒

编辑:
正如在评论中提到的阵列的不断增加的大小可能是问题,所以我做了NSArray使用arrayWithCapacity,但vectorreserve(!),也和它比以前更慢(imax= 1,jmax= 10000000).
NSArray- 2.55942
vector<int>- 0.19139
结束编辑

为什么这么慢?

我的代码供参考:

#import <Foundation/Foundation.h>
#include <vector>
#include <iostream>
#include <time.h>

using namespace std;

int main (int argc, const char * argv[])
{
    int imax = 1000;
    int jmax = 10000; …
Run Code Online (Sandbox Code Playgroud)

optimization stl objective-c

13
推荐指数
3
解决办法
3677
查看次数

标签 统计

objective-c ×1

optimization ×1

stl ×1