编码速度,编程速度权衡:使用本机代码的C ++或Java

时间:2013-07-22 15:03:17

标签: networking optimization tradeoff

我想通过编写程序来探索不同类型的网络来探索神经网络。到目前为止,我已经用c ++编写了一个基本的感知器。据我所知,神经网络可能需要很多计算能力才能完成相当小的任务,因此优化是一个问题,或者至少我想认真对待这个想法,而不是像gpu编程那样极端。

我很喜欢使用Java编程,而使用C ++则不太熟悉,但无论如何都希望获得更多使用它的经验。

我的问题:

鉴于我能够在Java中更快地编写主程序,但我担心速度。用Java编写主程序并用C ++编写更密集的部分或者用C ++编写整个程序更有意义吗?

我没有用户界面要求比一种语言更喜欢一种语言其他(即我不打算将其粘贴在网络应用程序中)。

**没有其他人会使用它,因为已经有更多专业的开源版本可用(FANN / Encog)。这纯粹是为了我的娱乐/学习。我想学习更多的C ++,所以我想写至少一些如果它(尽管有人觉得用Java完全写它更有意义我会有兴趣知道为什么。)

2 个答案:

答案 0 :(得分:1)

这是一个相当主观的问题,并不是真的适合SO,但我会试一试。

根据您的实施情况,您可能会发现自己受到带宽和延迟等因素的限制。如果我是你,我会尽可能用你熟悉的语言写出来,对它进行描述,然后回过头来快速重写慢速部分,并考虑优化。

这是我希望通常受CPU限制的项目的优化过程。

既然你正在努力更好地掌握C ++,那么在整个过程中使用C ++而不是java可能会对你有所帮助,并在以后优化它的一部分,但神经网络可能不是一个非常“初学者友好”的项目。你最终可能会因为更适合另一种语言的设计而导致火车残骸。你可能还是可以从中学习,但是在完成后你将无法使用它。

答案 1 :(得分:0)

您将花费大部分时间进行易于矢量化的浮点运算。你真的不应该使用java;它没有矢量算术的功能,它的优化器不会(或者,也许,没有?)尝试向量化代码本身。现代C ++编译器可以做得更好。