java - 在哪里运行复杂的算法?服务器端还是客户端?

标签 java php android mysql performance

<分区>

我正在尝试开发一个包含大量用户数据库的社交网络 android 应用程序。我对 Android 应用程序开发非常陌生,并试图了解应用程序开发背后的概念。 我正在使用以下技术:

1) MYSQL + PHP (RESTful 网络服务) 2)安卓工作室(Java)

在应用程序中,我必须运行一些复杂的算法来对用户进行排名,这些算法从存储在云服务器中的数据库的不同表中收集数据。

我的问题是“在哪里运行这个算法?”。 我是否应该用 PHP 编写代码以使算法在服务器端运行,然后将此数据发送到客户端 (或者) 我应该使用从服务器收集的数据在 JAVA (Android Studio) 中编写代码吗?

我的应用在这两种情况下的性能有何不同?

编辑:感谢您的所有回复。

我对异步任务和多线程有想法。

我产生了这种疑问,因为排名对我的所有用户来说都是常见的,但存在差异。如果我将 raking 算法放在服务器端,即使所有用户的结果都相同,相同的算法也必须运行多次(假设有 10000 个用户,相同的算法在服务器端运行 10000 次)。但如果我确实放在客户端,我可能会过来。但需要专家解决这个问题。

最佳答案

这个问题可能有点基于意见,但我认为有一些设计规则可以用作指南:

  • 当计算需要大量数据时,请尽可能靠近数据进行计算。这通常在数据库本身上。传输大量数据是资源密集型的,不是通过慢速链接(例如服务器和客户端之间)的好主意。
  • 如果计算需要处理私有(private)数据,则还设置了数据出于计算目的可以传输多远的界限。不在客户端显示数据不属于隐私数据保护!
  • 如果计算是资源密集型的,可以缓存,对许多用户有效,甚至可以提前计算,则在服务器上执行并缓存结果。
  • 如果计算需要的数据很少但属于计算密集型,请问问自己服务器是否可以很好地扩展以支持所有客户端发出并发请求。让客户端计算此类操作可以带来更稳定的整体性能,尽管客户端的资源有限(如今仍然非常有用!)。

关于java - 在哪里运行复杂的算法?服务器端还是客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41439889/

相关文章:

android - SimpleExoPlayerView 是否有 Controller 可见性更改事件?

JavaFX。在不同线程中将项目添加到列表不起作用

java - 我如何在输入 Android EditText 时调用函数

PHP:返回对数组元素的引用

java - 不幸的是(android应用程序)已经停止了。空指针异常

java - Android 中针对不同应用程序的拆分显示

java - 从 Android 中的自定义对象动态更新 textView

java - Java 独立项目 VSCode 中显示无法识别的选项 : -ea, --enable-preview 错误

php - MySQL登录错误警告

javascript - 在数组中添加了很多 var javascript 并删除了已插入的特定数组