[x] You have run ./mvnw verify and the project builds successfully
[x] Tests pass (./test.sh <username> shows no differences between expected and actual outputs)
[x] All formatting changes by the build are committed
[x] Your launch script is named calculate_average_<username>.sh (make sure to match casing of your GH user name) and is executable
[x] Output matches that of calculate_average_baseline.sh
[x] For new entries, or after substantial changes: When implementing custom hash structures, please point to where you deal with hash collisions (line number)
@gunnarmorling Please review the same. My implementation doesn't use Unsafe and doesn't use Graal VM. It goes about processing the file in the following manner
Maps the input file into memory
Divides the input file into multiple splits and multiple pages
Processes the multiple splits in parallel using a custom thread pool one page after another
Uses Java's Vector API for identifying positions of new-line characters within each page
Uses thread local state maps to perform local aggregation within each split
Uses a ConcurrentHashMap to create a global aggregate map
Sorts the station names by importing map entries into a tree map
Check List:
[x] You have run
./mvnw verify
and the project builds successfully[x] Tests pass (
./test.sh <username>
shows no differences between expected and actual outputs)[x] All formatting changes by the build are committed
[x] Your launch script is named
calculate_average_<username>.sh
(make sure to match casing of your GH user name) and is executable[x] Output matches that of
calculate_average_baseline.sh
[x] For new entries, or after substantial changes: When implementing custom hash structures, please point to where you deal with hash collisions (line number)
Execution environment: 8 vcores AMD EPYC 7000 (Rome) / 16 GiB RAM / SMT disabled
Execution time: 7.9 s
Execution time of reference implementation: 3m 11s