运维开发网

Scala与C进行分布式图形处理

运维开发网 https://www.qedev.com 2020-07-27 12:06 出处:网络 作者:运维开发网整理
对于最短路径计算等图形的并行处理, Scala会胜过C吗?如果没有,它会慢多少(我假设Scala并发比C更容易编写,因为C没有标准的支持这样的事情) 我正在考虑学习Scala,既要学习一门新语言,也要学习并发支持.一旦我完成了,我正在考虑编写一个分布式图形库来练习Scala,并且供我自己使用,但是如果C会更快并且更容易编写代码的好处不值得权衡,当性能是关注,我将不得不重新考虑这个任务. 由于以下原
对于最短路径计算等图形的并行处理, Scala会胜过C吗?如果没有,它会慢多少(我假设Scala并发比C更容易编写,因为C没有标准的支持这样的事情)

我正在考虑学习Scala,既要学习一门新语言,也要学习并发支持.一旦我完成了,我正在考虑编写一个分布式图形库来练习Scala,并且供我自己使用,但是如果C会更快并且更容易编写代码的好处不值得权衡,当性能是关注,我将不得不重新考虑这个任务.

由于以下原因,我建议Scala over C:

>并发 – 正如你所说,JVM上有很好的并发支持,而Scala是一种很好的语言,可以从中受益.这并不是说您不能在C中编写并发代码,但您会发现它在Scala中更容易“开箱即用”.

>垃圾收集 – 许多图算法从垃圾收集和其他内存管理方法中获益匪浅.同样,JVM上的垃圾收集非常好(比C世界中的任何东西都要好),并且会使您的算法更容易编写.

> JIT编译器的质量 – 为了遍历堆内存中的对象图,我怀疑好的C代码和JVM JIT生成的代码之间会有明显的性能差异. JVM针对这种用法进行了大量优化.

当然,可以在C中编写性能极高的代码.在某些情况下,手动调整的C/C++代码可以胜过JIT(例如,当您可以证明不需要它们时,避免需要数组边界检查或空指针检查).或者你可以编写自己的内存分配器,专门用于图形处理,理论上可能胜过JVM中的通用垃圾收集器(如果你想试试这个,你最好是一个真正的天才……)

总的来说,用C语言编写所有内容会复杂得多,理论上可以实现的边际性能提升几乎肯定不值得付出努力.

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号