微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Dart 在生成随机数并将它们附加到文件中时占用太多内存

如何解决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 举报,一经查实,本站将立刻删除。