aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Leaderboard updateGunnar Morling2024-01-251-9/+12
|
* CalculateAverage_gonix update (#579)gonix2024-01-251-23/+21
| | | Minor updates here and there, shaves off ~5% of execution time on my machine.
* Contribution by albertoventurini (#578)Alberto Venturini2024-01-252-0/+318
| | | | | | | | | | | | | | | * Contribution by albertoventurini * Shave off a couple of hundreds of milliseconds, by making an assumption on temperature readings * Parse reading without loop, inspired by other solutions * Use all cores * Small improvements, only allocate 247 positions instead of 256 --------- Co-authored-by: Alberto Venturini <alberto.venturini@accso.de>
* Updates for gamlerhart: Simpler & Faster (#580)Roman Stoffel2024-01-251-131/+86
| | | | | | | | | | | | | | | * Update with Rounding Bugfix * Simplification of Merging Results * More Plain Java Code for Value Storage * Improve Performance by Stupid Hash Drop around 3 seconds on my machine by simplifying the hash to be ridicules stupid, but faster. * Fix outdated comment
* Second submission to keep a bit of dignity (#581)Dmitry Bufistov2024-01-252-200/+183
| | | | | | | | | * Dmitry challenge * Dmitry submit 2. Use MemorySegment of FileChannle and Unsafe to read bytes from disk. 4 seconds speedup in local test from 20s to 16s.
* tonivade improved solution (#582)Antonio Muñoz2024-01-253-130/+148
| | | | | | | | | | | | | | | | | | | * tonivade improved not using HashMap * use java 21.0.2 * same hash same station * remove unused parameter in sameSation * use length too * refactor parallelization * use parallel GC * refactor * refactor
* Down to 14s locally (#583)Dr Ian Preston2024-01-251-49/+69
| | | | | | Use flat array for stats. Use simd for line termination Co-authored-by: Ian Preston <ianopolous@protonmail.com>
* armandino: minimise hash collisions + other improvements (#585)Arman Sharif2024-01-253-53/+79
|
* Simplify Node class with less field, improve hash mix speed (#584)Van Phu DO2024-01-252-67/+63
| | | | | | | * Simplify Node class with less field, improve hash mix speed * remove some ops, a bit faster * more inline, little bit faster but not sure
* gabrielfoo's first attempt (#556)gabrielfoo2024-01-253-0/+222
| | | | | | | | | * first attempt * formatting fix --------- Co-authored-by: Gabriel <gabriel@gabriel>
* C style code. Should be ~4secs or lower based on local testing. (#559)Vemana2024-01-253-0/+1705
| | | | | | 1. Use Unsafe 2. Fit hashtable in L2 cache. 3. If we can find a good hash function, it can fit in L1 cache even. 4. Improve temperature parsing by using a lookup table
* Update README.mdGunnar Morling2024-01-241-0/+1
|
* Fixing Thomas' JDK versionGunnar Morling2024-01-241-1/+1
|
* LeaderboardGunnar Morling2024-01-241-2/+1
|
* Leaderboard updateGunnar Morling2024-01-241-11/+19
|
* Go implementation by AlexanderYastrebov (#298)Alexander Yastrebov2024-01-239-0/+492
| | | | | | | | | | | | | | * Go implementation by AlexanderYastrebov This is a proof-of-concept to demonstrate non-java submission. It requires Docker with BuildKit plugin to build and export binary. Updates * #67 * #253 * Use collision-free id lookup * Use number of buckets greater than max number of keys
* Laake Scates-Gervasi first submission (justplainlaake) [2.5s execution, ↵Laake Scates-Gervasi2024-01-233-0/+512
| | | | | | | | | | | | | | | | | | | | | | | | | locally similar time to top 5] (#431) * Init Push * organize imports * Add OpenMap * Best outcome yet * Create prepare script and calculate script for native image, also add comments on calculation * Remove extra hashing, and need for the set array * Commit formatting changes from build * Remove unneeded device information * Make shell scripts executable, add hash collision double check for equality * Add hash collision double check for equality * Skip multithreading for small files to improve small file performance
* Rewrote to always read 16 bytes, this has less instructions on perf. (#562)Roy van Rijn2024-01-231-181/+116
| | | It doesn't make a lot of sense since quite some code can be written shorter, but this is what gives the best numbers.
* CalculateAverage_3j5a off-the-shelf Java components + ArraysSupport (#566)3j5a2024-01-233-0/+316
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * off the shell Java components, curious about official runtime results. thnx my laptop results are around 12 seconds, e.g: 87.66user 1.32system 0:12.11elapsed 734%CPU (0avgtext+0avgdata 13980924maxresident)k Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 39 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Vendor ID: GenuineIntel Model name: Intel(R) Core(TM) i5-8400H CPU @ 2.50GHz * off-the-shelf Java components... curious about official runtime results. thnx laptop results are around 11 seconds, e.g: ./calculate_average_3j5a.sh 81.46s user 1.36s system 758% cpu 10.917 total Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 39 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Vendor ID: GenuineIntel Model name: Intel(R) Core(TM) i5-8400H CPU @ 2.50GHz * off-the-shelf Java components + ArraysSupport.. laptop results are around 10.2 seconds, e.g: ./calculate_average_3j5a.sh 75.02s user 1.31s system 750% cpu 10.175 total Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 39 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Vendor ID: GenuineIntel Model name: Intel(R) Core(TM) i5-8400H CPU @ 2.50GHz * method handle... * full buffer read attempt * MH * MH cleanup
* 1brc contribution from mattiz (first attempt) (#567)Mathias Bjerke2024-01-232-0/+343
| | | | | * Contribution from mattiz * Formatted code
* fine tuning performance further (#526)karthikeyan972024-01-232-59/+50
| | | | | | | | | | | | | | | * final comit changing using mappedbytebuffer changes before using unsafe address using unsafe * using graalvm,correct unsafe mem implementation --------- Co-authored-by: Karthikeyans <karthikeyan.sn@zohocorp.com>
* Native image + a few smaller optimisations (#564)Roman Musin2024-01-233-134/+135
| | | | | | | | | * Inline parsing name and station to avoid constantly updating the offset field (-100ms) * Remove Worker class, inline the logic into lambda * Accumulate results in an int matrix instead of using result row (-50ms) * Use native image
* Add Yourwass take on the challenge (#532)yourwass2024-01-232-0/+311
| | | | * Uses vector api for city name parsing and for hash index collision resolution * Uses lookup tables for temperature parsing
* improvements (#521)Yann Moisan2024-01-231-7/+10
| | | | | | - inline computeIfAbsent - replace arraycopy by copyOfRange Co-authored-by: Yann Moisan <yann@zen.ly>
* Deploy v2 for parkertimmins (#524)Parker Timmins2024-01-231-97/+78
| | | | | | | | | | | | | | | | | | * Deploy v2 for parkertimmins Main changes: - fix hash which masked incorrectly - do station equality check in simd - make station array length multiple of 32 - search for newline rather than semicolon * Fix bug - entries were being skipped between batches At the boundary between two batches, the first batch would stop after crossing a limit with a padding of 200 characters applied. The next batch should then start looking for the first full entry after the padding. This padding logic had been removed when starting a batch. For this reason, entries starting in the 200 character padding between batches were skipped.
* parse value before going to map (#548)Artsiom Korzun2024-01-232-28/+50
| | | parse value before going to map
* First optimal solution attempt (#539)Gaurav Anantrao Deshmukh2024-01-232-0/+327
| | | | | | | | | | | * First optimal attempt * Removing debug lines * Using default string equals method --------- Co-authored-by: Gaurav Deshmukh <deshmgau@amazon.com>
* #540 Cache SDKman (#554)Gerd Aschemann2024-01-231-16/+18
| | | IMPORTANT: Only use SDKman provided Java - System JDK no longer installed!
* b1rc challenge by @jeevjyot (#551)Jeevjyot Singh Chhabda2024-01-232-0/+126
| | | | | | | | | | | | | | | * b1rc challenge * fixed a rounding error * added the file back * fixed file * removed a file --------- Co-authored-by: Jeevjyot Singh Chhabda <jeevjyotsinghchhabda@Jeevjyots-MBP.hsd1.ca.comcast.net>
* jerrinot's improvement - fast-path for short keys (#545)Jaromir Hamala2024-01-231-160/+273
| | | | | | | | | | | * fast-path for keys<16 bytes * fix off by one error the mask is wrong for he 2nd word when len == 16 * less chunks per thread seems like compact code wins. on my test box anyway.
* Add 1brc solution by @makohn (#544)Marek Kohn2024-01-232-0/+306
|
* Added environment docs (#555)Rene Schwietzke2024-01-231-0/+92
| | | | | * Create ENVIRONMENT.md * More intel added
* Leaderboard updateGunnar Morling2024-01-231-4/+5
|
* use thomaswue trick, use parallelism, slightly faster (#560)Van Phu DO2024-01-232-64/+97
|
* Use simd for name comparison (#568)Dr Ian Preston2024-01-231-87/+32
| | | Co-authored-by: Ian Preston <ianopolous@protonmail.com>
* tonivade implementation (try 2) (#541)Antonio Muñoz2024-01-233-0/+307
| | | | | | | | | | | | | | | | | * tonivade implementation * synchronized block performs better than ReentrantLock * remove ConcurrentHashMap * refactor * use HashMap.newHashMap * change double to int * minor refactor * fix
* Inline and optimize value parsing code for each of the four semicolon ↵Elliot Barlas2024-01-231-47/+112
| | | | position processing branches. This provides a small but noticeable speed-up. It also expands and obfuscates the code, unfortunately. (#563)
* Update README.md to add the _baseline (#552)Sarkie2024-01-221-1/+1
|
* evaluate.sh: Add note for "using Unsafe" (#547)Jason Nochlin2024-01-222-28/+34
| | | | | | | | | | | | | * fix typo * automatically label entries using Unsafe * fix for entry in src/main/java-22/ * backfill leaderboard --------- Co-authored-by: Jason Nochlin <hundredwatt@users.noreply.github.com>
* Add linl33's implementation (#503)Li Lin2024-01-215-1/+639
| | | | | | | | | * Add linl33's implementation * Update evaluate.sh --------- Co-authored-by: Gunnar Morling <gunnar.morling@googlemail.com>
* Leaderboard updateGunnar Morling2024-01-211-6/+6
|
* subprocess spawner (#542)Artsiom Korzun2024-01-213-45/+76
|
* Reverting ByteBuffer idea, using Thomas's trick instead. (#538)Roy van Rijn2024-01-212-9/+37
|
* Tuning and subprocess spawn for thomaswue (#533)Thomas Wuerthinger2024-01-212-72/+99
| | | | | | | | | | | | | * Some clean up, small-scale tuning, and reduce complexity when handling longer names. * Do actual work in worker subprocess. Main process returns immediately and OS clean up of the mmap continues in the subprocess. * Update minor Graal version after CPU release. * Turn GC back to epsilon GC (although it does not seem to make a difference). * Minor tuning for another +1%.
* optimize branches (#534)Artsiom Korzun2024-01-211-8/+15
|
* Adjust rolling hash function to operate at int-scale rather than byte-scale. ↵Elliot Barlas2024-01-211-22/+17
| | | | Ensure 8-byte alignment in key buffer for faster comparisons. (#523)
* Leaderboard updateGunnar Morling2024-01-211-1/+1
|
* Reduce allocations and heap size (#525)Roman Musin2024-01-212-23/+31
| | | | | | | | | | | * Reduce allocations * Shrink the heap size * Calculate hash when reading name (50-100ms difference) * no need to reverse bytes * bump heap size
* #104 Running tests for PRsGunnar Morling2024-01-214-0/+144
|
* Leaderboard updateGunnar Morling2024-01-213-6/+6
|