【问题标题】:Parsing CSV data client or server is faster解析 CSV 数据客户端或服务器更快
【发布时间】:2021-12-08 03:16:25
【问题描述】:

据我所知,我想将数据从 CSV 文件导入到 spring 控制器, 有两种方法:

  • 在客户端使用 papaparse.v.v 之类的库解析数据,然后将其发送到控制器
  • 上传文件,然后在服务器端解析 以上两种方式中哪种方式最好,非常感谢

【问题讨论】:

    标签: java spring csv


    【解决方案1】:

    各有优劣。

    如果您只有少数用户/客户端,那么在服务器上解析可能更合适。

    否则,应该考虑在客户端进行解析,因为它可以减少服务器的工作量。如果您的应用程序每天有成千上万的请求,则应优先考虑。

    【讨论】:

    • 但这就是问题所在。如果您在客户端解析,您需要以某种方式将解析后的数据发送到服务器。问:那是怎么做的?答:您必须将数据序列化,然后在服务器端对其进行反序列化。解析和反序列化基本上是具有不同“源语言”的相同过程。简而言之,您还没有将负载从服务器上移开。您刚刚在客户端上增加了额外的负载。
    【解决方案2】:

    首先,除非 CSV 文件很大或者您经常执行此导入操作,否则两种方法之间的性能差异很可能与用户无关......以及您。

    但是让我们比较一下这两种方法:

    • 客户端 CSV 解析:客户端 CSV 解析器很可能会很快……而您正在使用用户的 CPU 来执行此操作。但是,如果/当您将数据发送到服务器时,您将不得不重新序列化所有数据(例如,作为 JSON)。并且序列化的表单很可能需要在服务器端进行反序列化。

      因此,总体而言,您将在服务器端节省很少的时间,并增加在用户机器上解析和序列化的成本。

      但是,如果您可以在将数据发送到服务器之前在客户端进行一些(重要的)数据缩减,那么您最终可能会节省一些数据。这将取决于您可以减少多少数据,以及客户端 服务器网络数据速率。

    • 服务器端 CSV 解析。这避免了额外的序列化/反序列化开销。但是没有任何减少数据的机会。

    简而言之......这取决于具体情况。

    但我的建议是:“避免过早优化”。不要试图猜测哪种方法会更有效。实施更简单的版本,并且仅在证明需要优化时才优化(您的工作系统!)。

    【讨论】:

      猜你喜欢
      • 2013-07-12
      • 1970-01-01
      • 2015-09-29
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-21
      • 2021-09-27
      • 1970-01-01
      相关资源
      最近更新 更多