问题描述
我正在做一个项目,涉及生成 10 亿个随机 0/1 数字并将它们存储在一个文件中。这是我的代码:
import 'dart:io';
import 'dart:math';
final int COUNT = 1000000000;
final Random randomizer = new Random();
final File file = new File('./dart/dart.txt');
void main() {
if (file.existsSync()) {
file.deleteSync();
}
file.createSync();
DateTime before = new DateTime.Now();
IOSink sink = file.openWrite(mode: FileMode.append);
for (int i = 0; i < COUNT; i++) {
sink.write(nextNumber().toString());
}
sink.close();
DateTime after = new DateTime.Now();
print(after.millisecondsSinceEpoch - before.millisecondsSinceEpoch);
}
int nextNumber() {
return randomizer.nextInt(2);
}
它适用于 COUNT=10000
,需要十几毫秒才能生成 10000 个随机数。但是,当我将 COUNT
提高到 10 亿时,它占用了我大约 25GB 的 RAM,并且不间断地运行了 40 多分钟。我不得不终止进程而不是让它继续运行。
我该如何解决这个问题?
附言我无法更改编程语言,因为使用不同的编程语言来生成此类数字是我项目的一个方面。我也是用C++、Java、Javascript、PS、Python等来生成这么大的数据,都没有遇到过这个问题。存储数据的最终文件小于 1 GB。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)