如何解决Dart 在生成随机数并将它们附加到文件中时占用太多内存
我正在做一个项目,涉及生成 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 举报,一经查实,本站将立刻删除。