从 Trove (TObjectIntHashMap) 获取随机行?
Getting random lines from Trove (TObjectIntHashMap)?
有没有办法从 Trove (TObjectIntHashMap) 中获取随机行?我正在使用 Random 来测试 Trove 可以 seek/load 10,000 行的速度。具体来说,我想传入一个随机整数并让 Trove seek/load 那一行。我试过使用 get() 方法,但它要求我传递一个字符串而不是一个随机整数。我也考虑过使用 keys() 到 return 数组并从该数组读取,但这会破坏目的,因为我不会直接从 Trove 读取。这是我的代码:
import java.io.IOException;
import java.util.List;
import java.util.Random;
import com.comScore.TokenizerTests.Methods.TokenizerUtilities;
import gnu.trove.TObjectIntHashMap;
public class Trove {
public static TObjectIntHashMap<String> lines = new TObjectIntHashMap<String>();
public static void TroveMethod(List<String> fileInArrayList)
throws IOException {
TObjectIntHashMap<String> lines = readToTrove(fileInArrayList);
TokenizerUtilities.writeOutTrove(lines);
}
public static TObjectIntHashMap<String> readToTrove(
List<String> fileInArrayList) {
int lineCount = 0;
for (int i = 0; i < fileInArrayList.size(); i++) {
lines.adjustOrPutValue(fileInArrayList.get(i), 1, 1);
lineCount++;
}
TokenizerUtilities.setUrlInput(lineCount);
return lines;
}
public static void loadRandomMapEntries() {
Random rnd = new Random(lines.size());
int loadCount = 10000;
for (int i = 0; i < loadCount; i++) {
lines.get(rnd);
}
TokenizerUtilities.setLoadCount(loadCount);
}
}
有问题的方法是 loadRandomMapEntries(),特别是 for 循环。任何帮助表示赞赏。谢谢!
我会:
- 创建一个包含要插入的值的数组。
- 遍历数组并插入这些键。
- 从数组中选择一个随机索引并查找该键。
基本上已经有 benchmarks that come bundled with Trove 这样做了,所以你可以看看那些。
请记住,基准测试很难做到正确。我建议您使用 JMH 之类的框架进行基准测试,并确保始终在您的应用程序中进行测试以查看实际性能。
有没有办法从 Trove (TObjectIntHashMap) 中获取随机行?我正在使用 Random 来测试 Trove 可以 seek/load 10,000 行的速度。具体来说,我想传入一个随机整数并让 Trove seek/load 那一行。我试过使用 get() 方法,但它要求我传递一个字符串而不是一个随机整数。我也考虑过使用 keys() 到 return 数组并从该数组读取,但这会破坏目的,因为我不会直接从 Trove 读取。这是我的代码:
import java.io.IOException;
import java.util.List;
import java.util.Random;
import com.comScore.TokenizerTests.Methods.TokenizerUtilities;
import gnu.trove.TObjectIntHashMap;
public class Trove {
public static TObjectIntHashMap<String> lines = new TObjectIntHashMap<String>();
public static void TroveMethod(List<String> fileInArrayList)
throws IOException {
TObjectIntHashMap<String> lines = readToTrove(fileInArrayList);
TokenizerUtilities.writeOutTrove(lines);
}
public static TObjectIntHashMap<String> readToTrove(
List<String> fileInArrayList) {
int lineCount = 0;
for (int i = 0; i < fileInArrayList.size(); i++) {
lines.adjustOrPutValue(fileInArrayList.get(i), 1, 1);
lineCount++;
}
TokenizerUtilities.setUrlInput(lineCount);
return lines;
}
public static void loadRandomMapEntries() {
Random rnd = new Random(lines.size());
int loadCount = 10000;
for (int i = 0; i < loadCount; i++) {
lines.get(rnd);
}
TokenizerUtilities.setLoadCount(loadCount);
}
}
有问题的方法是 loadRandomMapEntries(),特别是 for 循环。任何帮助表示赞赏。谢谢!
我会:
- 创建一个包含要插入的值的数组。
- 遍历数组并插入这些键。
- 从数组中选择一个随机索引并查找该键。
基本上已经有 benchmarks that come bundled with Trove 这样做了,所以你可以看看那些。
请记住,基准测试很难做到正确。我建议您使用 JMH 之类的框架进行基准测试,并确保始终在您的应用程序中进行测试以查看实际性能。