我应该在哪里进行繁重的计算?客户端还是服务器端?

时间:2014-03-31 11:50:54

标签: javascript python web-applications numpy

我有一个用Python制作的桌面应用程序,使用PyQT和scipy / numpy。 该程序的目的是,在给定一些数据的情况下,为微分方程找到最佳参数集。

因此,我们使用numpy中的数值求解器和优化例程。如果我们使用自定义参数空间探索,计算是相当大的,但也很快(最多30秒),但可以变得更长(几个小时)。

下一步是“将其置于云端”,因此用户无需费心如何安装应用程序。 因此,我们想要创建一个Flask应用程序,使用d3.js或类似的东西进行显示。

我从未做过任何JS,所以我想知道什么是最好的架构:

  • 用户上传他的数据,他们在服务器上发送,执行计算并发送回去=>我们可以在服务器上使用scipy / numpy,但过多的同时连接可能会关闭所有内容。

  • 用户上传他的数据,他们在JavaScript中处理,在客户端=>在服务器上没有问题,但我必须自己发现一种新语言并实现科学计算(我认为它将比numpy中的Fortran例程更长)

使用/学习JS不是真正的问题,因为它更有效率更有问题。 哪个是未来修改的最佳选择(计算时间更长,我们希望提供结果的聚类......)以及开发时间。

你会做什么? 谢谢。

1 个答案:

答案 0 :(得分:3)

考虑两种情况:如果计算是客户端的,那么客户端就会被加载,客户端计算机(可能只是一部手机或其他任何东西)的计算能力就会发挥作用,而且无关紧要该网站的其他用户是否同时进行计算。

另一方面,如果计算是在服务器端完成的,那么你的服务器就会被加载,单用户情况下的计算时间可能会更短(因为你的服务器可能比普通的客户端计算机更强大),但如果你有很多用户同时访问你的服务器,它会大幅下降。

其他方面发挥作用:

  • 如果您在服务器端执行此操作,则应确保在传输参数或结果的过程中不会泄露任何私有数据(因此请使用https或类似内容。)

    < / LI>
  • 执行服务器端允许以后升级计算能力(可能将任务分成几个节点,以便缩短计算时间以获得更高的服务器成本)。

  • 如果采用适当的缓存机制,在客户端执行此操作可能允许甚至离线执行。

所以,总而言之,你的问题太广泛而且没有明确说明,无法给出明确答案。