.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

转载声明:

目录
相关文章
|
6月前
祝 .NET 20周年生日快乐
祝 .NET 20周年生日快乐
22 2
|
开发框架 监控 算法
.NET开源5年了,这些宝藏你还没get?
.NET开源5年了,这些宝藏你还没get?
199 0
.NET开源5年了,这些宝藏你还没get?
|
前端开发 Go
.Net Mirco Framework 2007技术大会
最近公司很多项目都有大量嵌入式设备使用,由于WinCE系统相对较大,对硬件平台要求过高,所以对.Net MF一直比较关注。今天总算大开眼界了
1109 0
|
Web App开发 前端开发 .NET
艾伟:[你必须知道的.NET]第三十一回,深入.NET 4.0之,从“新”展望
anytao.net | 《你必须知道的.NET》网站 | Anytao技术博客  发布日期:2009.05.22 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处。
1137 0
|
Windows
艾伟:.Net架构网站又一传奇:PlentyOfFish.com
这个叫PlentyOfFish的网站,  它只有一个员工,每天只干两小时活,但是却被估值$1000000000。 PlentyOfFish在山姆大叔家里算是一个很火的online dating网站,网站取名字来自这句话:There is plenty of fish in the sea. 对应的中文意思是“天涯何处无芳草”。
1471 0
|
Java
艾伟:.NET框架4.0中都有些什么?
.NET 4.0让不同组件之间工作的更好 1. 兼容性一直是个令人很头疼的问题,在.NET 4.0中,在同一个进程中,不同运行时上的组件可以同时运行,我们称之为In process Side by Side。
882 0
|
XML 测试技术 C#
一起谈.NET技术,七种武器武装.NET(常用开发工具介绍)
我学习.Net快一年了,偶然间发现大家用的开发工具很多我都没见过,于是暗中的进行收集(呵呵,夸张了),现在收集满七种特来做此总结!我称他们为“七种武器”\(^o^)/   第一种武器长生剑、NUnit (用于编写单元测试)   NUnit 是为 .NET 框架生成的开放源代码单元测试框架。
1290 0
|
Shell
一起谈.NET技术,疯狂的想法——基于.NET的软件超市平台构想与5年实现之路
  在2005年的时候,我曾经基于.NET 2003开发了一个小的组件,这个组件的目的是为了解决模块化开发和模块复用的问题。我将该组件命名为Common Form Framework,它的目的是允许每一个开发人员独立的开发自己的模块且可以直接专注于业务模块,然后通过配置可以快速将所有开发人员开发的业务逻辑窗体集成到这个组件中。
1255 0
|
架构师 测试技术 开发者
一起谈.NET技术,你是个软件架构师吗?
  开发和架构的界限难以捉摸。有些人告诉你它根本不存在,架构只是开发者们所做的设计过程的简单扩展。 另外一些人认为这是一个鸿沟,它只能由那些做到高度抽象,而且不会陷入实现细节的开发者才能跨越。通常,在这两个极端的观点中间某处有个可操作的平衡点;不论如何,怎么从开发转换为架构师都是个有趣的问题。
1088 0
|
安全 .NET 数据安全/隐私保护
.NET 4九大新特性 Fram“.NET研究”eWork达到新境界
  本文将向您介绍.NET框架4中的主要功能和改进特征。请注意,本文中并没有提供有关这些新功能的综合信息,并随时可能更改。   请注意,.NET框架4引入了一个改进的安全模式。有关该内容的更多的信息,请参阅文章《.NET框架4中的安全变化》。
1318 0