java程序运行时太快?内存问题



所以我正在运行一些需要一些样本数据集的模拟。为了简单起见,我使用这个http://loremipsum.sourceforge.net/Lorem Ipsum生成器。我正在设置一个名为DATASIZE的测试参数,用于设置生成器创建的单词或段落的数量。我正在使用这个生成的数据来创建一个";输入";以及";输出";搞砸输出数据将使用稍微不同的散列。例如,

String input = hash(new LoremIpsum().getWords(DATASIZE))
String output = hash(new LoremIpsum().getWords(DATASIZE-2))

我的问题是,Java是否将第一个数据集保存在内存中,然后稍微修改它以快速生成输出?也许我只是在运行时感到讨厌,但它看起来很小。在System.currentTimeMillis((中几乎为零;可能是罐子吗?

我还注意到我的输出有些奇怪。我正在创建几个存储这个输入和输出散列的对象。对于我生成的其中一些,由于某种原因,运行时是16。否则为0。有内存的东西还是粗制滥造的代码?

它使用StringBuilder。所以你的问题的答案是否定的。在getWords(..(中没有重用/缓存。-https://sourceforge.net/p/loremipsum/code/HEAD/tree/trunk/src/main/java/de/svenjacobs/loremipsum/LoremIpsum.java

话虽如此,若你们给出一个非常大的数字,比如1000000,那个么你们可能会看到差异。我使用我最新的全能macbook pro 进行了检查

public static void main(String[] args) {
LoremIpsum loremipsum = new LoremIpsum();

long start;
int number = 100000;

for(int i=0;i<5;i++) {
start = System.currentTimeMillis();
loremipsum.getWords(number);
System.out.println("getWords():" +(System.currentTimeMillis()-start));
}
}

输出单位:ms

getWords():11
getWords():7
getWords():5
getWords():4
getWords():4

最新更新