You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+17-10Lines changed: 17 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,22 +14,29 @@ This is... very good. For comparison, a Python script that used AWS Glue to do s
14
14
15
15
Then Rust got more optimized and Apple released the M1, and it got still faster. Finally, and I found the [profile-guided optimization](https://doc.rust-lang.org/rustc/profile-guided-optimization.html) docs, and it improved even more than I thought was still possible.
16
16
17
+
Most recently, it also turned out there was [a highly contended mutex around the regular expressions](https://github.com/rubytogether/kirby/pull/37) and that bought the multi-core version something like 40-60% more speed.
18
+
17
19
### Wait, _how_ fast?
18
20
19
-
~525 records/second/cpu in Python on Apache Spark in AWS Glue
20
-
~14,000 records/second/cpu in Ruby on a 2018 Intel MacBook Pro
21
-
~353,000 records/second/cpu in Rust on a 2018 Intel MacBook Pro
22
-
~550,000 records/second/cpu in Rust on a 2021 M1 MacBook Pro
23
-
~638,000 records/second/cpu in Rust on M1 with profile-guided optimization
21
+
~525 records/second/cpu in Python on Apache Spark in AWS Glue
22
+
~14,000 records/second/cpu in Ruby on a 2018 Intel MacBook Pro
23
+
~353,000 records/second/cpu in Rust on a 2018 Intel MacBook Pro
24
+
~550,000 records/second/cpu in Rust on a 2021 M1 MacBook Pro
25
+
~638,000 records/second/cpu in Rust on a 2021 M1 with PGO
26
+
~935,500 records/second/cpu in Rust on a 2025 M4 Max MacBook Pro
27
+
~983,500 records/second/cpu in Rust on a 2025 M4 Max with PGO
28
+
~1,240,000 records/second/cpu in Rust on a 2024 Ryzen 9 9950X with PGO
24
29
25
30
### Are you kidding me?
26
31
27
-
No. The latest version (which I am now benchmarking without also running `cargo build` 🤦🏻♂️) can parse records really, really fast.
32
+
No. The latest version can parse records really, really fast.
28
33
29
-
~4,200 records/second in Python with 8 worker instances on AWS Glue
30
-
~1,085,000 records/second in Rust with rayon on an 8-core Intel MacBook Pro
31
-
~3,195,000 records/second in Rust with rayon on a 10-core M1 MacBook Pro
32
-
~3,583,000 records/second in Rust with rayon on M1 with profile-guided optimization
34
+
~4,200 records/second in Python with 8 worker instances on AWS Glue
35
+
~1,085,000 records/second in Rust with rayon on an 8-core Intel MacBook Pro
36
+
~3,195,000 records/second in Rust with rayon on a 10-core M1 MacBook Pro
37
+
~3,583,000 records/second in Rust with rayon on M1 with PGO
38
+
~10,789,000 records/second in Rust with rayon on a 16-core M4 Max with PGO
39
+
~22,559,000 records/second in Rust with rayon on a 32-core Ryzen 9 9950X with PGO
0 commit comments