【发布时间】:2014-08-12 02:38:26
【问题描述】:
我不确定我能否以最清晰的方式提出我的问题,但我会尽力而为。
假设我正在从第三方 api 检索一些信息。检索到的信息将非常庞大。为了提高性能,我不是一次性检索所有信息,而是以分页方式检索信息(api 为我提供了该工具,基本上是一个迭代器)。返回类型基本上是一个对象列表。
我的目标是处理我手头的信息(包括比较和存储在数据库中以及许多其他操作),同时我得到请求的分页响应。
我在这里向专家社区提出的问题是,在这种情况下您更喜欢哪种数据结构。在这种情况下,像 Spring Batch 这样的框架是否可以帮助您获得性能提升。
我知道这个问题有点含糊,但我正在寻找一般的想法、提示和指示。
【问题讨论】:
-
问题确实有点含糊。在推断数据结构偏好时,您是指从 3rd 方 API 返回的数据结构吗?通常我们在这些问题上没有选择 :( 框架通常不用于提高性能。通常,开发人员将它们用于可扩展性(意味着我们必须做更少的样板代码,或者重写我们已经存在的功能重复使用)
-
返回类型基本上是对象的ArrayList。
-
@thePoly_glot 请记住,调用 API 很有可能是调用中最昂贵的部分。将所有数据放在一个块中通常是最好的主意。您是否完成了其他建议的分析?
-
@Patrick Collins 是的。这是我找到瓶颈所在的第一件事。是的,从 api 获取信息是最昂贵的部分。所以我想通了为什么不在 api 向我发送数据时做一些有用的事情。
-
我想我也必须投票“太模糊”。这里的并发性与您的处理有关,而不是 IO 很慢并且您以块的形式读取数据的事实。因此,我们需要了解您的所有任务,可能还需要了解所有数据,然后才能说出有用的信息。
标签: java multithreading concurrency spring-batch