1
2
如上述评论所述,如果
但是,您可以做一些事情,这些事情可能适用于您的情况,也可能不适用于您的情况。 如果数组的生成发生在时间关键区域之外,则生成该数组,或者使用字符串而不是整数生成数组的副本。用我对10000个整数的小测试,这大约快了5倍。
如果你同时控制阅读和写作过程,那么使用
我希望这些数字在Ruby的每个版本中都会有所不同,所以值得检查您的特定目标版本。 |
2
3
如果要将整数打印到stdout,则需要首先将其转换为字符串,因为这是stdout所能理解的全部内容。如果要将两个整数打印到stdout,则需要首先将它们都转换为字符串。如果要将三个整数打印到stdout,则需要首先将它们全部转换为字符串。如果要将10亿个整数打印到stdout,首先需要将10亿个整数全部转换为字符串。 你,我们,或者Ruby,或者任何编程语言都不能做到这一点。 您可以尝试通过执行懒惰的流实现将转换与I/O交错。您可以尝试并行执行转换和I/O,方法是执行一个延迟流实现,并将转换和I/O分离为两个单独的线程。(一定要使用Ruby实现,它实际上可以 执行 并行线程,并非所有线程都可以:例如,mri、yarv和rubinius不能。) 您可以通过并行地在单独的线程中转换数组中的单独块来并行转换。你甚至可以购买十亿个核心机器,同时并行转换所有十亿个整数。
但即便如此,问题仍然存在:每个整数都需要转换。无论你是先一个接一个地做,然后打印它们,还是一个接一个地与I/O交错,或者一个接一个地与I/O并行,或者甚至在十亿个核心CPU上同时转换它们:所需转换的数量不会神奇地减少。大量的整数意味着大量的转换。即使在10亿个核心CPU中并行进行10亿次转换,
仍然
十亿次转换,即十亿次呼叫
|
3
0
你的进度慢不是因为
|
4
0
对于单个数字,您可以这样做
如果你需要加速更大的数字,你可以尝试记忆
|
5
0
除非您真的需要查看控制台上的数字(听起来您不需要),否则将它们以二进制的形式写入一个文件——应该要快得多。 如果您需要这样做,您可以将二进制文件导入其他程序,而不仅仅是文本。 |
Toniq · javascript为php保存多维数组 1 年前 |
Jannis · Java中数组的怪异行为 1 年前 |
callum · 如何识别数组中与给定序列不匹配的元素? 1 年前 |
tenfour · 如何使用数组元素的索引初始化数组元素 2 年前 |
Guillaume · 使用操作从Python列表创建numpy数组 2 年前 |
maxMas · Swift 5:为什么会出现索引超出范围错误? 2 年前 |