java - 在 Java 中有效地复制大型时间序列结果
问题描述
我正在使用 Java 从时间序列数据库(在我的例子中是 Influx)中查询数据。我在数据库中有大约 20.000-100.000 个值(字符串)。将我通过 Influx Java API 获得的结果映射到我的域对象似乎非常低效(在小型机器上约为 0.5 秒)。我想这是由于域对象的“资源密集型”对象创建。
我目前正在使用 StreamsAPI:
QueryResult series = result.getResults().get(0).getSeries().get(0);
List<ItemHistoryEntity> mappedList = series.getValues().stream().parallel().map(valueList ->
new ItemHistoryEntity(valueList)).collect(Collectors.toList());
不幸的是,在我的情况下,我不能在数据库中对数据进行下采样。如何在 Java 中更有效地做到这一点?
编辑:接下来我将对列表进行下采样。问题是,为了进一步下采样,我需要列表中最旧的时间戳。为了得到这个时间戳,我需要迭代整个列表。Collectors.toList()
即使我需要至少迭代两次,在我减小列表大小之前永远不要调用它会更有效吗?或者我应该使用额外的数据库查询找到最旧的时间戳,然后只迭代列表一次并仅为减少列表调用收集器?
解决方案
推荐阅读
- android - 将模块导入 Android 项目后,Gradle Build 失败
- django - 尝试使用 AWS S3 将 Django React 应用程序部署到 Heroku 时出现错误的 STATIC_URL
- c++ - Opencv从控制中删除轮廓(椭圆)
- r - 增加`emmeans`比较箭头的粗细
- javascript - 动态添加元素中的元素引用导致 ExpressionChangedAfterItHasBeenCheckedError:
- android - ARM 汇编语言 - Android
- python-3.x - 通过smtp python发送电子邮件时如何替换发件人信息
- javascript - 代理路由字符串
- selenium-webdriver - Superset celery worker 抛出 selenium.common.exceptions
- python - 从数据框中删除重复的文档?