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 (将#修改为@)