分页: 1 / 1

#1 十亿行竞赛

发表于 : 2024年 3月 28日 15:45
hci
一个十亿行的CSV文本文件,大约13GiB,里面是一些气象站的温度记录,要求算每个站的平均,最高和最低温度。

https://github.com/gunnarmorling/1brc

目前排第一的结果是花1.535秒,用Java写,用GraalVM编译成native代码运行。

#2 Re: 十亿行竞赛

发表于 : 2024年 3月 28日 15:53
hci
这儿是一些人用其他语言写的。当然每个人用的机器不一样,所以绝对值比较没啥意义。但可看出,各语言基本上都达到类似的结果。

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/

#3 Re: 十亿行竞赛

发表于 : 2024年 3月 28日 15:58
webdriver
hci 写了: 2024年 3月 28日 15:45 一个十亿行的CSV文本文件,里面是一些气象站的温度记录,要求算每个站的平均,最高和最低温度。

https://github.com/gunnarmorling/1brc

目前排第一的结果是花1.535秒,用Java写,在GraalVM上运行。
比速度?那肯定不能用常规的file system去处理吧。想要快,估计得直读进CPU/GPU的缓存然后处理?
10亿行,平均算每行50个字符(UTF)x 2 = 100 byte x 10(9次方) = 100GB 数据。 typical SSD读取数据的速度在 1GB - 2GB,好像也得好几十秒左右?那意思是不算load 数据文件时间?
即使这样,数据处理,Java为啥能那么快? 如果是算法,那什么语言不都最后变成执行码,用汇编岂不更快
搞不懂

#4 Re: 十亿行竞赛

发表于 : 2024年 3月 28日 16:09
hci
当然包括读数据的时间。很多人对现代计算机有多快没有概念。这个竞赛让大家端正一下态度,也是好的。

第一名的代码: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有更多机会成功,合适的批处理的大小,等等。
webdriver 写了: 2024年 3月 28日 15:58 比速度?那肯定不能用常规的file system去处理吧。想要快,估计得直读进CPU/GPU的缓存然后处理?
10亿行,平均算每行50个字符(UTF)x 2 = 100 byte x 10(9次方) = 100GB 数据。 typical SSD读取数据的速度在 1GB - 2GB,好像也得好几十秒左右?那意思是不算load 数据文件时间?
即使这样,数据处理,Java为啥能那么快? 如果是算法,那什么语言不都最后变成执行码,用汇编岂不更快
搞不懂

#5 Re: 十亿行竞赛

发表于 : 2024年 3月 28日 16:14
webdriver
我老写不少文件处理的东西,就一个几十兆的txt文件,load进内存也要1秒多,所以存疑啊

#6 Re: 十亿行竞赛

发表于 : 2024年 3月 28日 16:20
hci
那你可以学习一下别人用到的技巧。
webdriver 写了: 2024年 3月 28日 16:14 我老写不少文件处理的东西,就一个几十兆的txt文件,load进内存也要1秒多,所以存疑啊

#7 Re: 十亿行竞赛

发表于 : 2024年 3月 28日 18:38
Caravel
这估计是io bound的,跟语言没有多少关系。

#8 Re: 十亿行竞赛

发表于 : 2024年 3月 29日 00:48
bihai
hci 写了: 2024年 3月 28日 15:45 一个十亿行的CSV文本文件,大约13GiB,里面是一些气象站的温度记录,要求算每个站的平均,最高和最低温度。

https://github.com/gunnarmorling/1brc

目前排第一的结果是花1.535秒,用Java写,用GraalVM编译成native代码运行。
有意思,这个技术可以把java 3d变快吗?比如,minecraft java?

#9 Re: 十亿行竞赛

发表于 : 2024年 3月 29日 11:34
hci
不知道。Java 3D不是用GPU加速的么,用不上这些。
bihai 写了: 2024年 3月 29日 00:48 有意思,这个技术可以把java 3d变快吗?比如,minecraft java?