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
+9-4
Original file line number
Diff line number
Diff line change
@@ -28,8 +28,6 @@ Processing Time: 6m53s. Tested with a Ryzen 5800x3d
28
28
29
29
Version 2.0 of the One Billion Row Challenge Processor introduces significant optimizations, leading to a substantial reduction in processing time. This release focuses on enhancing concurrency handling and reducing contention, along with other performance improvements.
30
30
31
-
## Performance Enhancements
32
-
33
31
-**Concurrent Map Implementation:** Introduced a sharded concurrent map to reduce lock contention. This allows for more efficient updates to the data structure in a multi-threaded environment.
34
32
-**Hash-Based Sharding:** Implemented hash-based sharding for distributing data across multiple shards, further reducing the chance of lock conflicts.
35
33
-**Optimized String Processing:** Refined the string handling logic to minimize overhead during file parsing.
@@ -40,14 +38,21 @@ Processing Time 5m19s. Tested with a Ryzen 5800x3d
40
38
41
39
## v3.0.0
42
40
43
-
## Key Enhancements
44
-
45
41
-**Parallel File Processing:** Implemented an advanced parallel processing approach where the input file is divided into chunks and processed independently in parallel, drastically reducing I/O bottleneck.
46
42
-**Optimized Memory Management:** Refined memory usage by processing data in chunks and employing local maps for data aggregation to reduce memory overhead.
47
43
-**Improved Data Aggregation:** Enhanced the efficiency of data aggregation through the use of sharded data structures, minimizing lock contention.
48
44
49
45
Processing Time: 1m3s. Tested with a Ryzen 5800x3d and 32 gigs Ram
50
46
47
+
## v3.1.0
48
+
49
+
-**Reduced Calls to global map**
50
+
-**Implemented a function to determine chunk bounds**
51
+
52
+
Processing Time: 59.6s. Tested with a Ryzen 5800x3d and 32 gigs Ram
53
+
54
+
I got this down to 59 Seconds and achieved my goal of getting it to under 1 minute. I am pretty happy with that for a single day session of coding. Further improvements could be made, and if I would continue working on it I would probably directly use a syscall with mmap and use the 8-byte hash of id as a key for an unsafe maphash. And maybe write some tests.
0 commit comments