成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

揚名立萬的機會來了!Java 十億行全球挑戰

開發 前端
“十億行挑戰”(1BRC)是一個有趣的探索,旨在測試 Java 從文本文件中聚合十億行數據的能力。動用你所有的(虛擬)線程,使用 SIMD 技術,優化垃圾回收,或者嘗試其他任何技巧,創建最快的實現方案來解決這個任務吧!

一、前言

2024年元旦起,此挑戰正式開放提交,截止日期為2024年1月31日。2024年1月31日23:59 UTC之后創建的提交(即拉取請求)將不予考慮。

“十億行挑戰”(1BRC)是一個有趣的探索,旨在測試 Java 從文本文件中聚合十億行數據的能力。動用你所有的(虛擬)線程,使用 SIMD 技術,優化垃圾回收,或者嘗試其他任何技巧,創建最快的實現方案來解決這個任務吧!

二、挑戰內容

圖片圖片

文本文件包含了一系列天氣站的溫度值。每一行都是一個測量結果,格式為<string: 站點名稱>;<double: 測量值>,其中測量值恰好有一位小數。以下是一個示例,展示了十行數據:

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

任務是編寫一個Java程序,該程序讀取文件,計算每個氣象站的最低、平均和最高溫度值,并將結果按照站點名稱按字母順序排列,并以格式<最低溫度>/<平均溫度>/<最高溫度>的方式輸出到stdout(即標準輸出),并將結果保留一位小數。

{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 21

三、運行挑戰

1brc 代碼庫包含兩個程序:

  • dev.morling.onebrc.CreateMeasurements (通過 create_measurements.sh 調用): 在此項目的根目錄中創建帶有可配置數量的隨機測量值的
    measurements.txt 文件。
  • dev.morling.onebrc.CalculateAverage (通過 calculate_average.sh 調用): 計算 measurements.txt 文件的平均值。

執行以下步驟來運行挑戰:

  1. 使用Apache Maven構建項目:
./mvnw clean verify
  1. 創建 1B 行測量文件(僅運行一次):
./create_measurements.sh 1000000000

這將需要幾分鐘。注意:生成的文件大小約為 12GB,請確保有足夠的磁盤空間。

  1. 計算平均測量值:
./calculate_average.sh

提供的簡單示例實現使用Java流API來處理文件,并在用于結果評估的環境中以約2分鐘完成任務。它作為比較自己實現的基線。

  1. 進行優化:

調整 CalculateAverage 程序以加快速度,使用任何你認為合適的方式(只需遵循下面描述的幾個規則)。選項包括并行化計算、使用(孵化中的)向量API、同時內存映射文件的不同部分、使用AppCDS、GraalVM、CRaC等加快應用程序啟動速度的工具,選擇和調整垃圾收集器等等。

四、規則和限制

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

SDKMan 提供的任何構建

openjdk.net 上可用的早期訪問版本(包括Valhalla等OpenJDK項目的EA版本)

builds.shipilev.net 上的構建。如果要使用這些渠道不可用的構建,請聯系討論是否可以考慮。

  • 不得使用外部依賴庫
  • 實現必須使用單個Java源文件
  • 計算必須在應用程序運行時進行,即不能在構建時處理測量文件(例如,當使用GraalVM時)并將結果直接嵌入到二進制文件中

輸入值范圍如下:

  • 站點名稱:非空的UTF-8字符串,最小長度為1個字符,最大長度為100個字符
  • 溫度值:非空的double值,介于-99.9(含)和99.9(含)之間,始終帶有一位小數
  • 實現不能依賴于給定數據集的特定情況,例如必須支持根據上述約束條件的任何有效站點名稱和任何數據分布(每個站點的測量次數)

五、參加挑戰

要將您自己的實現提交給1BRC,請按照以下步驟操作:

  • 創建 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)。這僅供參考,官方運行時將如下所述確定。

如果您想與社區討論有關實施1BRC的任何潛在想法,可以使用此存儲庫的 GitHub 討論。請保持友好和文明。

六、評估結果

結果是通過在 Hetzner Cloud CCX33 實例(8個CPU,32 GB RAM)上運行程序來確定的。時間程序用于測量執行時間,即測量整個時間。每個競爭者將連續運行五次。最慢和最快的運行將被丟棄。剩下三次運行的平均值是該競爭者的結果,并將添加到上面的結果表中。用于評估所有競爭者的完全相同的 measurements.txt 文件。如果您想在Hetzner Cloud上自行測試,請使用這些設置腳本(基于Terraform和Ansible),可能會對您有所幫助。請注意,這將產生費用 :) 

圖片圖片

項目地址:https://github.com/gunnarmorling/1brc 快來挑戰吧!

責任編輯:武曉燕 來源: JAVA架構日記
相關推薦

2016-12-30 13:50:57

2023-02-17 15:15:53

2025-03-28 12:29:48

2025-03-17 13:48:05

2015-11-30 11:28:04

2024-10-05 11:46:10

2021-04-01 22:36:52

數字化轉型程序員IT

2017-09-15 09:07:00

國美電商零售

2024-04-24 13:46:00

AI訓練

2019-07-17 12:43:28

ARVR投資價值

2022-03-09 10:06:38

網絡安全CSO

2021-12-20 22:46:02

手機蘋果芯片

2012-03-26 09:54:22

2010-03-01 09:58:23

2021-05-26 16:10:00

Python 開發編程語言

2021-03-17 07:53:44

芯片 5G芯片服務器芯片

2023-02-28 13:13:51

AI智能

2012-10-23 10:13:17

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人免费在线小视频 | www日本在线播放 | a天堂在线 | 日韩中文字幕av | 日韩中文字幕在线观看 | 操亚洲 | 夜夜av | 国产美女久久久 | 精品国产一区二区三区久久 | 亚洲精品美女 | 成人国产毛片 | 一区二区三区免费 | 久久久91精品国产一区二区三区 | 午夜精品一区二区三区在线视频 | 国产日韩一区二区三区 | 欧美不卡在线 | 国产日产精品一区二区三区四区 | www久久99 | 伊人二区 | 婷婷综合网 | 不卡在线视频 | hitomi一区二区三区精品 | 精品欧美一区二区精品久久久 | 婷婷色国产偷v国产偷v小说 | 国产精品夜夜夜一区二区三区尤 | 国产偷久久一级精品60部 | 欧美精品v国产精品v日韩精品 | 中文字幕三区 | 日韩中文字幕久久 | 一区二区三区在线免费观看 | 成人高潮片免费视频欧美 | 欧美成人手机在线 | 亚洲国产精品一区二区三区 | 精品视频在线观看 | 欧美一区二区三 | 一区二区三区视频在线观看 | 国产9999精品 | 中文字幕成人在线 | 99精品视频在线观看 | 国产三区四区 | 一级看片免费视频 |