日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

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

來源: 責編: 時間:2024-01-08 09:17:52 231觀看
導讀一、前言2024年元旦起,此挑戰正式開放提交,截止日期為2024年1月31日。2024年1月31日23:59 UTC之后創建的提交(即拉取請求)將不予考慮。“十億行挑戰”(1BRC)是一個有趣的探索,旨在測試 Java 從文本文件中聚合十億行數據的能

一、前言

2024年元旦起,此挑戰正式開放提交,截止日期為2024年1月31日。2024年1月31日23:59 UTC之后創建的提交(即拉取請求)將不予考慮。0RR28資訊網——每日最新資訊28at.com

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

二、挑戰內容

圖片圖片0RR28資訊網——每日最新資訊28at.com

文本文件包含了一系列天氣站的溫度值。每一行都是一個測量結果,格式為<string: 站點名稱>;<double: 測量值>,其中測量值恰好有一位小數。以下是一個示例,展示了十行數據:0RR28資訊網——每日最新資訊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(即標準輸出),并將結果保留一位小數。0RR28資訊網——每日最新資訊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 210RR28資訊網——每日最新資訊28at.com

三、運行挑戰

1brc 代碼庫包含兩個程序:0RR28資訊網——每日最新資訊28at.com

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

執行以下步驟來運行挑戰:0RR28資訊網——每日最新資訊28at.com

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

這將需要幾分鐘。注意:生成的文件大小約為 12GB,請確保有足夠的磁盤空間。0RR28資訊網——每日最新資訊28at.com

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

提供的簡單示例實現使用Java流API來處理文件,并在用于結果評估的環境中以約2分鐘完成任務。它作為比較自己實現的基線。0RR28資訊網——每日最新資訊28at.com

  1. 進行優化:

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

四、規則和限制

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

SDKMan 提供的任何構建0RR28資訊網——每日最新資訊28at.com

openjdk.net 上可用的早期訪問版本(包括Valhalla等OpenJDK項目的EA版本)0RR28資訊網——每日最新資訊28at.com

builds.shipilev.net 上的構建。如果要使用這些渠道不可用的構建,請聯系討論是否可以考慮。0RR28資訊網——每日最新資訊28at.com

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

輸入值范圍如下:0RR28資訊網——每日最新資訊28at.com

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

五、參加挑戰

要將您自己的實現提交給1BRC,請按照以下步驟操作:0RR28資訊網——每日最新資訊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)。這僅供參考,官方運行時將如下所述確定。0RR28資訊網——每日最新資訊28at.com

如果您想與社區討論有關實施1BRC的任何潛在想法,可以使用此存儲庫的 GitHub 討論。請保持友好和文明。0RR28資訊網——每日最新資訊28at.com

六、評估結果

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

圖片圖片0RR28資訊網——每日最新資訊28at.com

項目地址:https://github.com/gunnarmorling/1brc 快來挑戰吧!0RR28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-57923-0.html揚名立萬的機會來了!Java 十億行全球挑戰

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

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

下一篇: 八張圖講清楚Mmap實現原理

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 精河县| 镶黄旗| 米脂县| 湟源县| 六枝特区| 郯城县| 韶山市| 靖江市| 怀来县| 弥勒县| 迁安市| 遵义市| 杨浦区| 巫溪县| 浙江省| 龙口市| 神木县| 永顺县| 扎鲁特旗| 曲阳县| 德惠市| 郑州市| 绥宁县| 葫芦岛市| 根河市| 曲阳县| 庆城县| 嘉兴市| 绥滨县| 油尖旺区| 扶余县| 自治县| 大悟县| 饶阳县| 青海省| 广饶县| 桓仁| 乐清市| 张家界市| 云南省| 乌鲁木齐市|