| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* cleanup prepare script
* native image options
* fix quardaric probing (no change to perf)
* mask to get the last chunk of the name
* extract hash functions
* tweak the probing loop (-100ms)
* fiddle with native image options
* Reorder conditions in hope it makes branch predictor happier
* extracted constant
|
| |
|
|
|
|
|
| |
* improve hard disk access locality, another 8%
* add some comments & credit
* fixed format
|
| |
|
| |
Co-authored-by: Quang Hieu Dao <hieu_dq@flinters.vn>
|
| |
|
|
|
| |
* Initial submission
* fixed not executable scripts
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* Improve hash function
* remove limit on number of cores
* fix calculation of boundaries between chunks
* fix IOOBE
---------
Co-authored-by: Jason Nochlin <hundredwatt@users.noreply.github.com>
|
| |
|
| |
Minor updates here and there, shaves off ~5% of execution time on my machine.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|
|
|
|
|
|
|
| |
* 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 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
|
| |
|
|
|
|
| |
Use flat array for stats.
Use simd for line termination
Co-authored-by: Ian Preston <ianopolous@protonmail.com>
|
| | |
|
| |
|
|
|
|
|
| |
* Simplify Node class with less field, improve hash mix speed
* remove some ops, a bit faster
* more inline, little bit faster but not sure
|
| |
|
|
|
|
|
|
|
| |
* first attempt
* formatting fix
---------
Co-authored-by: Gabriel <gabriel@gabriel>
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
| |
It doesn't make a lot of sense since quite some code can be written shorter, but this is what gives the best numbers.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|
|
|
| |
* Contribution from mattiz
* Formatted code
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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>
|
| |
|
|
|
|
|
|
|
| |
* 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
|
| |
|
|
| |
* Uses vector api for city name parsing and for hash index collision resolution
* Uses lookup tables for temperature parsing
|
| |
|
|
|
|
| |
- inline computeIfAbsent
- replace arraycopy by copyOfRange
Co-authored-by: Yann Moisan <yann@zen.ly>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|
|
|
|
|
|
|
|
|
| |
* First optimal attempt
* Removing debug lines
* Using default string equals method
---------
Co-authored-by: Gaurav Deshmukh <deshmgau@amazon.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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>
|
| |
|
|
|
|
|
|
|
|
|
| |
* 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.
|
| | |
|
| | |
|
| |
|
| |
Co-authored-by: Ian Preston <ianopolous@protonmail.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tonivade implementation
* synchronized block performs better than ReentrantLock
* remove ConcurrentHashMap
* refactor
* use HashMap.newHashMap
* change double to int
* minor refactor
* fix
|
| |
|
|
| |
position processing branches. This provides a small but noticeable speed-up. It also expands and obfuscates the code, unfortunately. (#563)
|
| |
|
|
|
|
|
|
|
| |
* Add linl33's implementation
* Update evaluate.sh
---------
Co-authored-by: Gunnar Morling <gunnar.morling@googlemail.com>
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* 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%.
|
| | |
|
| |
|
|
| |
Ensure 8-byte alignment in key buffer for faster comparisons. (#523)
|
| |
|
|
|
|
|
|
|
|
|
| |
* Reduce allocations
* Shrink the heap size
* Calculate hash when reading name (50-100ms difference)
* no need to reverse bytes
* bump heap size
|
| | |
|
| | |
|
| |
|
|
|
| |
- It avoids creating unnecessary Strings objects and handles with the station names with its djb2 hashes instead
- Initializes hashmaps with capacity and load factor
- Adds -XX:+AlwaysPreTouch
|
| |
|
| |
Co-authored-by: Giovanni Cuccu <gcuccu@imolainformatica.it>
|
| |
|
|
|
|
|
|
|
| |
* 0xshivamagarwal implementation
* .
---------
Co-authored-by: Shivam Agarwal <>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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>
|
| |
|
|
|
|
|
|
|
|
|
| |
* files created by create_fork.sh
* use indexOf
* improved implementation based on rafaelmerino
---------
Co-authored-by: Yann Moisan <yann@zen.ly>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Version 3
* Use SWAR algorithm from netty for finding a symbol in a string
* Faster equals - store the remainder in a long field (- 0.5s)
* optimise parsing numbers - prep
* Keep tweaking parsing logic
* Rewrote number parsing
may be a tiby bit faster it at all
* Epsilon GC
|
| |
|
| |
Co-authored-by: Ian Preston <ianopolous@protonmail.com>
|