具有有效数字数据类型的垃圾收集语言

时间:2019-01-27 22:23:18

标签: java data-structures jvm programming-languages primitive

我正在寻找一种语言/库(最好是基于JVM的语言),该语言/库可以方便且有效地处理数字值(整数和浮点数)。

  • 方便:由收集框架和泛型支持。
  • 有效:当基元是 数据繁重的数据处理软件中的基本构建块
    (具体来说,要处理多个GB的文本,且> 100,000,000
    项目)。

当前语言的不足之处:

  • 普通Java:自动装箱非常方便,但功能强大 开销。
  • Scala和Kotlin:似乎也依赖Java的盒装 原语,因此这里没有效率优势。
  • Python:同样,似乎将所有数值都装箱了,我们遇到了香草Python带来的性能问题。提供不同实现的Numpy不支持所需的功能。

是否有一种语言能够以相同的便利性但有效地处理基元(与该语言的一般性能相比)?

1 个答案:

答案 0 :(得分:1)

C#是否符合标准,取决于您对效率要求的含义。当然,它不能在JVM上运行。

与Java一样,Java使用类型擦除来实现泛型,而C#则像C ++一样通过验证实现泛型。这意味着当您创建List<int>时,基础数组将是int的数组,而不是对象的数组。同样,实现所有List方法的代码将专门针对List<int>进行编译,并且可以利用特定于int的优化。

因此,在使用所有便利的语言功能时,在C#中使用基本类型的数据处理通常比在Java中更快。但是,由于运行时检查(防止缓冲区溢出等)不是免费的,因此它与C ++相比仍然相去甚远。