首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据附加到bcolz表中的性能

将数据附加到bcolz表中的性能
EN

Stack Overflow用户
提问于 2015-10-21 08:56:25
回答 1查看 403关注 0票数 0

我刚刚开始使用bcolz包,并在ctables上运行教程。使用fromiter函数创建表,即:

代码语言:javascript
复制
N = 100*1000
ct = bcolz.fromiter(((i,i*i) for i in range(N)), dtype="i4,f8", count=N, rootdir='mydir', mode="w")

速度很快,在我的计算机上占用了大约30 is (2.7GHz带有SSD存储的核心i7 ),但是第二个例子是:

代码语言:javascript
复制
with bcolz.zeros(0, dtype="i4,f8", rootdir='mydir', mode="w") as ct:
     for i in range(N):
        ct.append((i, i**2))

非常慢(45秒)。我可以通过不写磁盘来接近fromiter时间(即删除rootdir='mydir', mode="w",但它仍然是2秒左右)。

这个例子使用了很多非常小的附加,我想知道这是否是一个有大量数据的推荐用例。对于这些操作应该花费多长时间,没有任何确切的数字,只是有很多建议认为库运行得很快。

我试着修改代码,用块编写数据:

代码语言:javascript
复制
with bcolz.zeros(0, dtype="i4,f8", rootdir="mydir", mode='w') as ct:
    for i in range(10):
        ii = np.arange(10000) + 10000*i
        ct.append((ii,ii**2))

如果我不写磁盘的话,这需要45毫秒-下降到6毫秒。这似乎更符合我所见过的bcolz案例的建议用法。

在编写时,我找不到很多关于需要阻塞的文档,所以我认为这可能是由于我的系统?

EN

回答 1

Stack Overflow用户

发布于 2016-06-23 16:17:43

代码语言:javascript
复制
%timeit with bcolz.zeros(0, dtype="i4,f8", rootdir="mydir", mode='w') as ct: ct.append([np.arange(10000)+10000*i for i in range(10)])

100圈,最佳每圈3: 3.82毫秒

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33254966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档