标签: capacity

为什么要启动具有初始容量的ArrayList?

通常的构造函数ArrayList是:

ArrayList<?> list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

但是还有一个重载的构造函数,其初始容量有一个参数:

ArrayList<?> list = new ArrayList<>(20);
Run Code Online (Sandbox Code Playgroud)

ArrayList当我们可以随意添加时,为什么创建具有初始容量的产品很有用?

java arraylist capacity data-structures

147
推荐指数
5
解决办法
8万
查看次数

计算localStorage空间的用法

我正在使用Bespin编辑器和HTML5的localStorage创建一个应用程序.它在本地存储所有文件并有助于语法,使用JSLint和其他一些CSS和HTML解析器来帮助用户.

我想计算已经使用了多少localStorage限制以及实际存在多少.今天有可能吗?我想不要简单地计算存储的位数.但话又说回来,我不确定还有什么我无法衡量自己.

javascript size storage capacity local-storage

76
推荐指数
6
解决办法
6万
查看次数

StringBuilder的默认容量

什么是默认容量StringBuilder

什么时候应该(或不应该)使用默认值?

.net c# stringbuilder capacity

32
推荐指数
4
解决办法
3万
查看次数

31
推荐指数
3
解决办法
6万
查看次数

限制REST API用户的最佳做法?

我正在整理一个REST API,因为我不确定它将如何扩展或对它的需求是什么,我希望能够对它的限制使用率以及能够暂时拒绝请求时框已超出容量或者是否存在某种slashdotted方案.

我还希望能够优雅地暂时关闭服务(同时向客户端提供表明主服务稍微离线的结果)当/如果我需要通过添加更多容量来扩展服务时.

对于这种事情,有没有最佳做法?使用mysql实现Rails.

rest scaling ruby-on-rails capacity

30
推荐指数
2
解决办法
9554
查看次数

NSMutableArray initWithCapacity细微差别

有没有人建议如何在指定容量时最好地初始化NSMutableArray?该文档提到"......即使您在创建数组时指定了大小,指定的大小也被视为"提示";数组的实际大小仍为0." 所以...

1)如果我的初始容量比我通常使用的容量大,那么我是否不必担心内存浪费?

2)如果我的初始容量通常低于我使用的容量,我是否必须担心更重的处理时间分配更多的内存来容纳额外的元素?

这个初始化容量对这种数据类型的性能/内存使用有多大影响?

performance cocoa capacity nsmutablearray

26
推荐指数
2
解决办法
9206
查看次数

Java StringBuilder(StringBuffer)的ensureCapacity():为什么它加倍并递增2?

我已经搜索了这个,但是我找不到为什么StringBuilder的ensureCapacity()方法不会通过加倍来延长旧容量,而是添加两个.

因此,当默认容量16已满时,下一个加长值将为34,除非整个字符串长度不超过34.为什么不应该是32?

我最好的猜测是考虑一个空字符'\ u0000',但我不确定.谁能告诉我为什么?

java stringbuilder stringbuffer capacity

26
推荐指数
1
解决办法
838
查看次数

为什么std :: vector保留不会"加倍"它的容量,而resize呢?

我刚刚发现,std::vector<T>::resize即使调整大小超过当前大小的一个元素,它的容量"加倍":

std::vector<int> v(50);
v.resize(51);
std::cout << v.capacity() << std::endl;
Run Code Online (Sandbox Code Playgroud)

该程序使用GCC和Clang输出100,使用Visual C++输出75.但是,当我切换resizereserve:

std::vector<int> v(50);
v.reserve(51);
std::cout << v.capacity() << std::endl;
Run Code Online (Sandbox Code Playgroud)

所有三个编译器的输出为51.

我不知道为什么实现使用了不同的扩张策略resizereserve.它似乎不一致,我希望在这里有相同的行为.


我只是添加了一个关于我的问题动机的链接,其中报告了对性能的影响:为什么C++ STL向量在做多个预留时会慢1000倍?


添加C++ 11标准中的引用以阐明要求reserve; §23.3.6.3(2):

之后reserve(),capacity()大于或等于给的参数reserve,如果重新分配发生...


一些额外的想法:来自C++ 11标准:

复杂性:插入元素的数量加上到向量末尾的距离是复杂的.

实际上,这意味着在最后插入单个元素的常数(摊销)复杂性.但是,这仅适用于矢量修饰符,例如push_backinsert(§23.3.6.5).

resize未在修饰符中列出.它列在§23.3.6.3 vector容量部分中.并且,没有复杂性要求resize.

但是,在vector概述部分(§23.3.6.1)中,写有:

it(vector)支持(分期)常量时间插入和擦除操作

问题是是否resize(size()+1)被认为是"插入到最后".

c++ resize vector capacity

25
推荐指数
4
解决办法
2984
查看次数

清除矢量会影响其容量吗?

我实例化了一个std::vector foo(1000).

foo.size()现在是1000,foo.capacity()也是1000.

如果我清除矢量foo.clear(),size()现在是0,但是什么是capacity()?标准是否对此有所说明?

c++ size vector std capacity

24
推荐指数
2
解决办法
9407
查看次数

为ArrayList提供初始容量时,为什么这会变慢?

对于一个实验,我做了这个小程序.它只生成1000万个随机字符串并将它们添加到arraylist中.请注意,ArrayList中并没有有一个初步的能力.

// editors note: added the necessary boilerplate to run,
// and take initial capacity as an optional cmdline arg for easier testing
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

class ArrayListTest {
    public static void main(String[] args)
    {
        int initsize = -1;
        if (args.length > 0) {
            initsize = Integer.parseInt(args[0]);
        }

        long startTime = System.currentTimeMillis();

        List<String> randNums = initsize>=0 ? new ArrayList<>(initsize) : new ArrayList<>();
        // final List<String> randNums = initsize>=0 ? new ArrayList<String>(initsize) : new ArrayList<String>();

        Random …
Run Code Online (Sandbox Code Playgroud)

java performance arraylist capacity

20
推荐指数
1
解决办法
1257
查看次数