具有高效数字数据类型的垃圾收集语言
Garbage-collected languages with efficient numeric data types
我正在寻找一个 language/library(最好是基于 JVM 的),它可以方便高效地处理数值(整数和浮点数)。
- 方便:集合框架和泛型支持。
- 高效:当基元是
数据密集型数据处理软件中的构建块
(具体来说,处理多 GB 的文本 >100,000,000
项)。
当前语言的不足:
- Plain Java: 自动装箱很方便,但是有实质性的
开销。
- Scala 和 Kotlin:似乎也依赖于 Java 的盒装
原语,所以这里没有效率优势。
- Python:同样,似乎将所有数值都装箱了,我们 运行 陷入了普通 Python 令人望而却步的性能问题。提供不同实现的 Numpy 不支持所需的功能。
是否有一种语言可以同样方便但高效地处理原语(与该语言的一般性能相比)?
C# 符合标准,具体取决于您所说的效率要求。当然,它不会 运行 在 JVM 上。
与通过类型擦除实现泛型的 Java 不同,C# 像 C++ 一样通过具体化实现泛型。这意味着当您创建 List<int>
时,底层数组将是 int
的数组,而不是对象数组。此外,实现所有 List
方法的代码将专门针对 List<int>
进行编译,并且可以利用特定于 int 的优化。
因此,当您使用所有方便的语言功能时,在 C# 中使用基本类型处理数据通常比在 Java 中更快。然而,它仍然与 C++ 所能达到的效果相去甚远,因为防止缓冲区溢出 运行 的 运行 时间检查等并不是免费的。
我正在寻找一个 language/library(最好是基于 JVM 的),它可以方便高效地处理数值(整数和浮点数)。
- 方便:集合框架和泛型支持。
- 高效:当基元是
数据密集型数据处理软件中的构建块
(具体来说,处理多 GB 的文本 >100,000,000
项)。
当前语言的不足:
- Plain Java: 自动装箱很方便,但是有实质性的 开销。
- Scala 和 Kotlin:似乎也依赖于 Java 的盒装 原语,所以这里没有效率优势。
- Python:同样,似乎将所有数值都装箱了,我们 运行 陷入了普通 Python 令人望而却步的性能问题。提供不同实现的 Numpy 不支持所需的功能。
是否有一种语言可以同样方便但高效地处理原语(与该语言的一般性能相比)?
C# 符合标准,具体取决于您所说的效率要求。当然,它不会 运行 在 JVM 上。
与通过类型擦除实现泛型的 Java 不同,C# 像 C++ 一样通过具体化实现泛型。这意味着当您创建 List<int>
时,底层数组将是 int
的数组,而不是对象数组。此外,实现所有 List
方法的代码将专门针对 List<int>
进行编译,并且可以利用特定于 int 的优化。
因此,当您使用所有方便的语言功能时,在 C# 中使用基本类型处理数据通常比在 Java 中更快。然而,它仍然与 C++ 所能达到的效果相去甚远,因为防止缓冲区溢出 运行 的 运行 时间检查等并不是免费的。