非常大的数组和非常大的数字的最佳编程语言?

Posted

技术标签:

【中文标题】非常大的数组和非常大的数字的最佳编程语言?【英文标题】:Best programming language for very large arrays and very large numbers? 【发布时间】:2011-02-17 13:30:49 【问题描述】:

对于非常大的数组和非常大的数字,最好的编程语言是什么?

拥有超过 30,000 个索引的数组 以及超过 100 位的数字

它还需要高效,或者易于提高效率。

谢谢。

【问题讨论】:

一个包含 30k 个元素的数组没有那么大 @Matt 如果元素很大,则不会;) @Kakira:在大多数语言中,“大”对象数组只是指向这些对象的指针数组,它本身并没有那么大。即使在 64 位系统上,30k 8 字节指针的数组也小于 235 KB。对象本身会占用更多空间,但它们有 30k 的事实基本上是无关紧要的:系统只需要足够的 RAM。 【参考方案1】:

几乎任何称职的编程语言都应该具有这些特性,坦率地说,我不认为我想使用不能处理包含 30,000 个元素的数组的任何语言。我将列出一些对非常大的数字有很好的支持:

蟒蛇。 Python 3 自动支持大数字,因为默认数字类型会根据需要增长,并且有一些 really awesome math libraries. 其他语言可能会稍微快一些,但除非出于某种原因你确定 python 不够好我会从那里开始。

C#。这主要会将您绑定到 Windows,但它非常流行、快速且 meets your requirements。

Java。跨平台,mature support with BigInteger。

Haskell。与大数的无缝转换和强大的数学支持。如果你有很强的数学背景,Haskell 会觉得很自然。如果您已经了解函数式编程或者不介意花几个小时来学习它,那么这是一个不错的选择。

C/C++。非常快,但开发起来有点复杂。在大量支持其他东西时,您可能会获得更好的结果。如果您尝试过用其他语言优化代码但速度仍然不够快,我只会研究 C++,除非您有特定的理由不使用中间编译的语言。


事情的真相是很难找到一种支持这些东西的编程语言,如果可以的话,我可能不会将它用于任何事情,因为它可能不是成熟。您还有其他要求可以帮助我们进一步缩小范围吗? :D

【讨论】:

实际上,找到(其现有实现)效率不高的编程语言并不难;) @toochin,这是真的,但除非您绝对确定您的性能要求可以证明在语言选择中将速度放在首位,这意味着您已经测试了多种语言的代码,但仍然没有得到你需要的速度,我不会太担心性能。我同意很明显你不想为此使用像 javascript 这样的语言。 :D C/C++ 不支持大数;你必须自己实现它们。【参考方案2】:

数组不是问题。由 100 个数字(数字)组成的数字是一个巨大的问题。我对这个问题没有很好的答案(因为它已经过时了),但由于这在谷歌中很容易出现,我会提到大多数语言只支持 32 到 64 位数字。 (我知道 C 系列语言、php、as3 和 Java 不支持大量数字。)

例如,一个 32 位数字将允许 0 到 4,294,967,295 (2^32-1) 的范围,这只有 10 个数字(实际上更像 9,因为限制是大小,而不是数字),整个数量级少于提问者要求的 100 位数字。

也就是说,我知道有人在 C 和 AS3 中实现对大量数字的支持...

【讨论】:

【参考方案3】:

Python 和 NumPy 可能是你想要的。

【讨论】:

【参考方案4】:

我总是发现 Fortran 在处理数组时非常好,尤其是。与多维的。但是,如果您正在处理非常大的数字,您可能需要定义自己的数据类型或忍受精度损失。或者使用这个:http://www.fortran.com/big_integer_module.f95。

但这有点取决于你想做什么。 Fortran 非常适合数值计算,但对于其他一切都不是很好。

【讨论】:

以上是关于非常大的数组和非常大的数字的最佳编程语言?的主要内容,如果未能解决你的问题,请参考以下文章

在非常大的数组中找到 N 个唯一随机数的最佳算法

遍历非常大的 JSON 数组

c语言求数组第k大的数字

读取大文件的最佳方式(例如非常大的文本文档)

绘制非常大的图形上下文的最佳实践

初始化一个非常大的熊猫数据框