当前位置:首页 > 科技  > 软件

扬名立万的机会来了!Java 十亿行全球挑战

来源: 责编: 时间:2024-01-08 09:17:52 302观看
导读一、前言2024年元旦起,此挑战正式开放提交,截止日期为2024年1月31日。2024年1月31日23:59 UTC之后创建的提交(即拉取请求)将不予考虑。“十亿行挑战”(1BRC)是一个有趣的探索,旨在测试 Java 从文本文件中聚合十亿行数据的能

一、前言

2024年元旦起,此挑战正式开放提交,截止日期为2024年1月31日。2024年1月31日23:59 UTC之后创建的提交(即拉取请求)将不予考虑。BJO28资讯网——每日最新资讯28at.com

“十亿行挑战”(1BRC)是一个有趣的探索,旨在测试 Java 从文本文件中聚合十亿行数据的能力。动用你所有的(虚拟)线程,使用 SIMD 技术,优化垃圾回收,或者尝试其他任何技巧,创建最快的实现方案来解决这个任务吧!BJO28资讯网——每日最新资讯28at.com

二、挑战内容

图片图片BJO28资讯网——每日最新资讯28at.com

文本文件包含了一系列天气站的温度值。每一行都是一个测量结果,格式为<string: 站点名称>;<double: 测量值>,其中测量值恰好有一位小数。以下是一个示例,展示了十行数据:BJO28资讯网——每日最新资讯28at.com

Hamburg;12.0Bulawayo;8.9Palembang;38.8St. John's;15.2Cracow;12.6Bridgetown;26.9Istanbul;6.2Roseau;34.4Conakry;31.2Istanbul;23.0

任务是编写一个Java程序,该程序读取文件,计算每个气象站的最低、平均和最高温度值,并将结果按照站点名称按字母顺序排列,并以格式<最低温度>/<平均温度>/<最高温度>的方式输出到stdout(即标准输出),并将结果保留一位小数。BJO28资讯网——每日最新资讯28at.com

{Abha=-23.0/18.0/59.2, Abidjan=-16.2/26.0/67.3, Abéché=-10.0/29.4/69.0, Accra=-10.1/26.4/66.4, Addis Ababa=-23.7/16.0/67.0, Adelaide=-27.8/17.3/58.5, ...}

注意:必须使用 Java 21BJO28资讯网——每日最新资讯28at.com

三、运行挑战

1brc 代码库包含两个程序:BJO28资讯网——每日最新资讯28at.com

  • dev.morling.onebrc.CreateMeasurements (通过 create_measurements.sh 调用): 在此项目的根目录中创建带有可配置数量的随机测量值的
    measurements.txt 文件。
  • dev.morling.onebrc.CalculateAverage (通过 calculate_average.sh 调用): 计算 measurements.txt 文件的平均值。

执行以下步骤来运行挑战:BJO28资讯网——每日最新资讯28at.com

  1. 使用Apache Maven构建项目:
./mvnw clean verify
  1. 创建 1B 行测量文件(仅运行一次):
./create_measurements.sh 1000000000

这将需要几分钟。注意:生成的文件大小约为 12GB,请确保有足够的磁盘空间。BJO28资讯网——每日最新资讯28at.com

  1. 计算平均测量值:
./calculate_average.sh

提供的简单示例实现使用Java流API来处理文件,并在用于结果评估的环境中以约2分钟完成任务。它作为比较自己实现的基线。BJO28资讯网——每日最新资讯28at.com

  1. 进行优化:

调整 CalculateAverage 程序以加快速度,使用任何你认为合适的方式(只需遵循下面描述的几个规则)。选项包括并行化计算、使用(孵化中的)向量API、同时内存映射文件的不同部分、使用AppCDS、GraalVM、CRaC等加快应用程序启动速度的工具,选择和调整垃圾收集器等等。BJO28资讯网——每日最新资讯28at.com

四、规则和限制

  • 可以使用以下任何Java发行版:

SDKMan 提供的任何构建BJO28资讯网——每日最新资讯28at.com

openjdk.net 上可用的早期访问版本(包括Valhalla等OpenJDK项目的EA版本)BJO28资讯网——每日最新资讯28at.com

builds.shipilev.net 上的构建。如果要使用这些渠道不可用的构建,请联系讨论是否可以考虑。BJO28资讯网——每日最新资讯28at.com

  • 不得使用外部依赖库
  • 实现必须使用单个Java源文件
  • 计算必须在应用程序运行时进行,即不能在构建时处理测量文件(例如,当使用GraalVM时)并将结果直接嵌入到二进制文件中

输入值范围如下:BJO28资讯网——每日最新资讯28at.com

  • 站点名称:非空的UTF-8字符串,最小长度为1个字符,最大长度为100个字符
  • 温度值:非空的double值,介于-99.9(含)和99.9(含)之间,始终带有一位小数
  • 实现不能依赖于给定数据集的特定情况,例如必须支持根据上述约束条件的任何有效站点名称和任何数据分布(每个站点的测量次数)

五、参加挑战

要将您自己的实现提交给1BRC,请按照以下步骤操作:BJO28资讯网——每日最新资讯28at.com

  • 创建 1brc GitHub 存储库的 fork。
  • 创建 CalculateAverage.java 的副本,命名为 CalculateAverage_<your_GH_user>.java,例如 CalculateAverage_doloreswilson.java。
  • 使该实现变得快速。真的很快。
  • 创建 calculate_average.sh 的副本,命名为 calculate_average_<your_GH_user>.sh,例如 calculate_average_doloreswilson.sh。
  • 调整该脚本,以引用您的实现类名。如果需要,在该脚本中通过 JAVA_OPTS 变量提供任何 JVM 参数。
  • OpenJDK 21 是默认选项。如果需要使用自定义 JDK 构建,请在应用程序启动之前的启动 shell 脚本中包含 SDKMAN 命令 sdk use java [version]。
  • (可选)如果您想要使用原生二进制文件(GraalVM),请调整 pom.xml 文件以构建该二进制文件。
  • 针对上游存储库创建一个拉取请求,明确说明

您的实现类的名称。
程序在您的系统上的执行时间以及相应的规格(CPU、核心数、RAM)。这仅供参考,官方运行时将如下所述确定。BJO28资讯网——每日最新资讯28at.com

如果您想与社区讨论有关实施1BRC的任何潜在想法,可以使用此存储库的 GitHub 讨论。请保持友好和文明。BJO28资讯网——每日最新资讯28at.com

六、评估结果

结果是通过在 Hetzner Cloud CCX33 实例(8个CPU,32 GB RAM)上运行程序来确定的。时间程序用于测量执行时间,即测量整个时间。每个竞争者将连续运行五次。最慢和最快的运行将被丢弃。剩下三次运行的平均值是该竞争者的结果,并将添加到上面的结果表中。用于评估所有竞争者的完全相同的 measurements.txt 文件。如果您想在Hetzner Cloud上自行测试,请使用这些设置脚本(基于Terraform和Ansible),可能会对您有所帮助。请注意,这将产生费用 :) BJO28资讯网——每日最新资讯28at.com

图片图片BJO28资讯网——每日最新资讯28at.com

项目地址:https://github.com/gunnarmorling/1brc 快来挑战吧!BJO28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-57923-0.html扬名立万的机会来了!Java 十亿行全球挑战

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Fiber Golang 中的路由和中间件

下一篇: 八张图讲清楚Mmap实现原理

标签:
  • 热门焦点
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • K6:面向开发人员的现代负载测试工具

    K6 是一个开源负载测试工具,可以轻松编写、运行和分析性能测试。它建立在 Go 和 JavaScript 之上,它被设计为功能强大、可扩展且易于使用。k6 可用于测试各种应用程序,包括 Web
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 得物宠物生意「狂飙」,发力“它经济”

    作者|花花小萌主近日,得物宣布正式上线宠物鉴别,通过得物App内的&ldquo;在线鉴别&rdquo;,可找到鉴别宠物的选项。通过上传自家宠物的部位细节,就能收获拥有专业资质认证的得物鉴
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起&ldquo;冯提莫&rdquo;这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的&ldquo;斗鱼一姐&rdquo;,冯提莫在游戏直播的年代影响力不输于现
  • 华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • 利用职权私自解除被封帐号 Meta开除20多名员工

    11月18日消息,据外媒援引知情人士表示,过去一年时间内,Facebook母公司Meta解雇或处罚了20多名员工以及合同工,指控这些人通过内部系统以不当方式重置用户帐号,其
Top