Java的替代品

Jon*_*ank 1 java oop garbage-collection

我需要Java的替代品,因为我正在研究遗传计算项目.它需要大量的内存和大部分的CPU时间.因此,当我在服务器上部署它时它不会工作,因为许多人同时使用该程序.

是否有人知道另一种语言没有在虚拟机中运行并且类似于Java(面向对象,使用异常和类型安全)?

最好的祝福,

乔纳森

Chi*_*Uni 22

要回答直接问题:有几十种语言符合您的明确要求.AmmoQ列出了一些; 维基百科还有很多.

而且我认为你会对他们中的每一个人感到失望.

尽管Java仇恨者想要你想到,但Java的性能与其他任何编译语言没有太大的不同.只是改变语言不会提高性能.

通过获取分析器并查看您使用的算法,您可能会做得更好.

祝好运!

  • 我完全同意......除非您确定代码/算法不是问题,否则您只需将Java中的瓶颈移到新语言的瓶颈中. (8认同)

Bar*_*own 10

如果您的应用程序占用单用户工作站上的大部分CPU和内存,我怀疑将其转换为某种非VM语言会有很大帮助.使用Java,您可以依靠VM来处理内存管理等问题.你将不得不用非VM语言重新实现它们的等价物.此外,Java的内存管理非常好.您的应用程序可能不是实时敏感的,因此暂时暂停它不是问题.此外,无论如何,你将在多用户系统上运行它,对吧?

内存使用将更多地与您的底层数据结构和算法有关,而不是与语言有关的神奇之处.除非你有一个非常好的内存分配器库用于你选择的语言,你可能会发现由于你的程序中的错误你使用了尽可能多的内存(如果不是更多).

由于您的应用程序是计算密集型的,因此除非您在整个代码中插入一些策略性的sleep()调用以故意使其更频繁地产生CPU,否则其他一些语言不太可能使其减少.这会减慢速度,但对其他用户来说会更好.

尝试使用Java的-server选项运行您的应用程序.这将使用为长期运行的程序设计的VM,并包含一个将Java编译为本机代码的JIT.它可能会使您的程序运行得更快,但仍然会受到CPU和内存的限制.


Eri*_*ler 9

如果你不喜欢C++,你可以考虑使用谷歌的D,ObjectiveC或新的Go语言.


Mur*_* VP 6

您可以尝试使用C++,它可以满足您的所有要求.


Sha*_*mar 5

使用Python以及numpy,scipy和matplotlib包.numpy是一个Python包,其中包含用C实现的所有数字运算代码.因此,运行时性能(Python虚拟机的bcoz)不会成为问题.

如果您只想编译静态类型语言,请查看Haskell.