.NET 已加入 1BRC 挑战赛

简介: 1BRC 挑战赛的目标是找到完成这个任务的最快实现,并在此过程中探索现代 Java 的优势。所以,抓住所有(虚拟)线程,使用 Vector API 和 SIMD,优化 GC,利用 AOT 编译,或者使用您能想到的任何其他技巧。

About 1BRC 挑战

1BRC 的全称是 The One Billion Row Challenge(十亿行挑战), 最初是由 Gunnar Morling 使用 Java 发起的,主要为了探讨现代 Java 在处理 10 亿行文本文件方面能走多远。抓住所有(虚拟)线程,使用 SIMD,优化 GC,或者使用任何其他技巧,使用最快的实现来解决这个任务,如下:

1BRC

编写一个程序,读取文本文件中的温度测量值,并计算每个气象站的最低、平均和最高温度。

任务看似简单,忘了告诉你,这个文件有 1,000,000,000 行!

文本结构很简单,前面是气象站,后面是测量值

Hamburg;12.0
Bulawayo;8.9
Palembang;38.8
St. John's;15.2
Cracow;12.6
...

需要打印出每个站点的最小值、平均值和最大值,按字母顺序排列,如下所示:

{
   
   
  Abha=5.0/18.0/27.4,
  Abidjan=15.7/26.0/34.1, 
  Abéché=12.1/29.4/35.6,
  Accra=14.7/26.4/33.1, 
  Addis Ababa=2.1/16.0/24.3, 
  Adelaide=4.1/17.3/29.7, 
  ...
}

1BRC 挑战赛的目标是找到完成这个任务的最快实现,并在此过程中探索现代 Java 的优势。所以,抓住所有(虚拟)线程,使用 Vector APISIMD,优化 GC,利用 AOT 编译,或者使用您能想到的任何其他技巧。

.NET 已加入挑战

1BRC.NET 实现由 Victor Baybekov 发起,项目地址为:

截止到 1 月 7 日 20:30,战果如下:

1

作者的一些优化内容如下:

  • 使用了 MmapSpan API
  • 优化哈希函数, Utf8Span.GetHashCode
  • 设置字典容量为 10k
  • 手动 SIMD:查找边界并简化解析
  • 避免零扩展,优化局部变量和循环
  • 如果您对这个挑战感兴趣, 欢迎加入,Show me the code!

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

转载声明:

目录
相关文章
|
Kubernetes 架构师 Java
史上最全对照表:大厂P6/P7/P8 职业技能 薪资水平 成长路线
40岁老架构师尼恩,专注于帮助读者提升技术能力和职业发展。其读者群中,多位成员成功获得知名互联网企业的面试机会。尼恩不仅提供系统化的面试准备指导,还特别针对谈薪酬环节给予专业建议,助力求职者在与HR谈判时更加自信。此外,尼恩还分享了阿里巴巴的职级体系,作为行业内广泛认可的标准,帮助读者更好地理解各职级的要求和发展路径。通过尼恩的技术圣经系列PDF,如《尼恩Java面试宝典》等,读者可以进一步提升自身技术实力,应对职场挑战。关注“技术自由圈”公众号,获取更多资源。
|
7月前
|
人工智能 Cloud Native Java
2025 开源之夏开启报名|AI + 云原生,10个开源项目、24个课题任您挑选
“开源之夏”是由中国科学院软件研究所发起的暑期活动,旨在鼓励高校学生参与开源软件开发与维护。活动联合各大开源社区提供项目任务,面向全球年满18周岁的高校学生开放报名。每位学生最多可申请一个项目。阿里云云原生提报了包括Apache Dubbo、RocketMQ、Seata等在内的10个开源项目共24个课题,涵盖技术优化、功能实现及AI应用等领域。活动流程包括选题、申请、开发与结项考核,具体信息可访问官网了解。
2252 32
|
存储 数据采集 缓存
Bitmap 和 布隆过滤器傻傻分不清?你这不应该啊
大家好,我是小富。本文介绍了 Redis 的 Bitmap 和布隆过滤器的区别与关系,包括它们的底层原理、应用场景及优缺点。Bitmap 以 bit 为单位存储数据,适用于记录二值状态,如用户签到、在线状态等。布隆过滤器通过多个哈希函数优化哈希碰撞问题,适用于大规模数据的快速判断,如缓存穿透、邮箱黑名单过滤等。两者都能高效处理大数据量和高并发场景。
668 122
|
Android开发
SocketException: Failed to create server socket(OS Error: Permission denied, errno = 13)
SocketException: Failed to create server socket(OS Error: Permission denied, errno = 13)
253 3
|
机器学习/深度学习 人工智能 Cloud Native
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台。本文深入解析 .NET 的核心优势,探讨其在企业级应用、Web 开发及移动应用等领域的应用案例,并展望未来在人工智能、云原生等方面的发展趋势。
251 3
|
算法 UED 开发者
🚀短链(Short Link):发展动态与工具推荐🚀
短链是将冗长的URL通过特定算法压缩成简短的字符串,便于用户在社交媒体和营销活动中分享。短链不仅美化了链接,还提升了用户体验,并具有易于传播和跟踪分析的优势。本文介绍了短链的作用、发展历程,以及在goo.gl退出后,推荐的替代工具如Dub.co,帮助用户继续享受短链带来的便利与营销价值。
1399 1
🚀短链(Short Link):发展动态与工具推荐🚀
|
机器学习/深度学习 算法 Python
深度解析机器学习中过拟合与欠拟合现象:理解模型偏差背后的原因及其解决方案,附带Python示例代码助你轻松掌握平衡技巧
【10月更文挑战第10天】机器学习模型旨在从数据中学习规律并预测新数据。训练过程中常遇过拟合和欠拟合问题。过拟合指模型在训练集上表现优异但泛化能力差,欠拟合则指模型未能充分学习数据规律,两者均影响模型效果。解决方法包括正则化、增加训练数据和特征选择等。示例代码展示了如何使用Python和Scikit-learn进行线性回归建模,并观察不同情况下的表现。
1597 3
|
芯片
芯片验证 | UVM的objection机制
芯片验证 | UVM的objection机制
551 1
|
算法 UED
探索编程思维:不仅是代码,更是解决问题的艺术
【5月更文挑战第24天】 在数字世界的舞台上,编程不单是一系列指令的排列组合,它更是一种独特的思维方式。本文将深入探讨编程思维的本质及其在问题解决过程中的应用。我们将剖析编程思维如何影响逻辑构建、创新思考和系统分析,并通过实例说明如何将编程原则应用于日常生活和非技术领域。
|
Rust 安全 数据挖掘
【颠覆常规】Rust科学计算革命:掌握数值分析与数据处理的全新利器,让你的工作事半功倍!
【8月更文挑战第31天】Rust语言凭借其出色的内存安全和高性能特性,在科学计算领域逐渐崭露头角。本文通过具体代码示例展示了Rust在数值计算与数据分析中的应用,包括矩阵乘法、统计分析及线性方程组求解。通过安装Rust并引入`ndarray`、`nalgebra`和`statrs`等库,读者可以轻松实现各类科学计算任务。Rust在科学计算领域的潜力巨大,未来可期。
809 1