一个十亿行的CSV文本文件,大约13GiB,里面是一些气象站的温度记录,要求算每个站的平均,最高和最低温度。
https://github.com/gunnarmorling/1brc
目前排第一的结果是花1.535秒,用Java写,用GraalVM编译成native代码运行。
十亿行竞赛
版主: hci
-
- 论坛精英
- 帖子: 6563
- 注册时间: 7月 22, 2022, 3:29 pm
- 昵称(选填): 海螺子
#2 Re: 十亿行竞赛
这儿是一些人用其他语言写的。当然每个人用的机器不一样,所以绝对值比较没啥意义。但可看出,各语言基本上都达到类似的结果。
C99, 1.392秒: https://github.com/dannyvankooten/1brc
C, 1.6秒: https://www.dannyvankooten.com/blog/2024/1brc/
Rust, 1.02秒:https://curiouscoding.nl/posts/1brc/
C99, 1.392秒: https://github.com/dannyvankooten/1brc
C, 1.6秒: https://www.dannyvankooten.com/blog/2024/1brc/
Rust, 1.02秒:https://curiouscoding.nl/posts/1brc/
上次由 hci 在 3月 28, 2024, 3:55 pm,总共编辑 1 次。
原因: 未提供修改原因
原因: 未提供修改原因
-
- 职业作家
- 帖子: 540
- 注册时间: 11月 11, 2022, 12:30 pm
- 来自: 火星
- 昵称(选填): 不折腾不舒服斯基
#3 Re: 十亿行竞赛
比速度?那肯定不能用常规的file system去处理吧。想要快,估计得直读进CPU/GPU的缓存然后处理?hci 写了: ↑3月 28, 2024, 3:45 pm 一个十亿行的CSV文本文件,里面是一些气象站的温度记录,要求算每个站的平均,最高和最低温度。
https://github.com/gunnarmorling/1brc
目前排第一的结果是花1.535秒,用Java写,在GraalVM上运行。
10亿行,平均算每行50个字符(UTF)x 2 = 100 byte x 10(9次方) = 100GB 数据。 typical SSD读取数据的速度在 1GB - 2GB,好像也得好几十秒左右?那意思是不算load 数据文件时间?
即使这样,数据处理,Java为啥能那么快? 如果是算法,那什么语言不都最后变成执行码,用汇编岂不更快
搞不懂
-
- 论坛精英
- 帖子: 6563
- 注册时间: 7月 22, 2022, 3:29 pm
- 昵称(选填): 海螺子
#4 Re: 十亿行竞赛
当然包括读数据的时间。很多人对现代计算机有多快没有概念。这个竞赛让大家端正一下态度,也是好的。
第一名的代码:https://github.com/gunnarmorling/1brc/b ... aswue.java
这儿有一个第九名的一步步的解释,https://questdb.io/blog/billion-row-cha ... p-by-step/
大致是这么一些主意: 把Java用GraalVM编译成native代码,用并行io,用mmap,用SIMD Within A Register来parse数字,减少条件的数目让CPU branch prediction有更多机会成功,合适的批处理的大小,等等。
第一名的代码:https://github.com/gunnarmorling/1brc/b ... aswue.java
这儿有一个第九名的一步步的解释,https://questdb.io/blog/billion-row-cha ... p-by-step/
大致是这么一些主意: 把Java用GraalVM编译成native代码,用并行io,用mmap,用SIMD Within A Register来parse数字,减少条件的数目让CPU branch prediction有更多机会成功,合适的批处理的大小,等等。
上次由 hci 在 3月 28, 2024, 4:22 pm,总共编辑 4 次。
原因: 未提供修改原因
原因: 未提供修改原因
-
- 职业作家
- 帖子: 540
- 注册时间: 11月 11, 2022, 12:30 pm
- 来自: 火星
- 昵称(选填): 不折腾不舒服斯基
#5 Re: 十亿行竞赛
我老写不少文件处理的东西,就一个几十兆的txt文件,load进内存也要1秒多,所以存疑啊
-
- 论坛精英
- 帖子: 6563
- 注册时间: 7月 22, 2022, 3:29 pm
- 昵称(选填): 海螺子
-
- 论坛支柱
Caravel 的博客 - 帖子: 12272
- 注册时间: 7月 24, 2022, 5:21 pm
#7 Re: 十亿行竞赛
这估计是io bound的,跟语言没有多少关系。
-
- 职业作家
- 帖子: 687
- 注册时间: 7月 24, 2022, 8:58 pm
#8 Re: 十亿行竞赛
有意思,这个技术可以把java 3d变快吗?比如,minecraft java?hci 写了: ↑3月 28, 2024, 3:45 pm 一个十亿行的CSV文本文件,大约13GiB,里面是一些气象站的温度记录,要求算每个站的平均,最高和最低温度。
https://github.com/gunnarmorling/1brc
目前排第一的结果是花1.535秒,用Java写,用GraalVM编译成native代码运行。
-
- 论坛精英
- 帖子: 6563
- 注册时间: 7月 22, 2022, 3:29 pm
- 昵称(选填): 海螺子