Commit Graph

687 Commits

Author SHA1 Message Date
Yann Moisan
b3420d9348
improvements (#521)
- inline computeIfAbsent
- replace arraycopy by copyOfRange

Co-authored-by: Yann Moisan <yann@zen.ly>
2024-01-23 19:58:10 +01:00
Parker Timmins
c886aaba34
Deploy v2 for parkertimmins (#524)
* 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.
2024-01-23 19:43:34 +01:00
Artsiom Korzun
d858959097
parse value before going to map (#548)
parse value before going to map
2024-01-23 19:38:32 +01:00
Gaurav Anantrao Deshmukh
46d2058bd4
First optimal solution attempt (#539)
* First optimal attempt

* Removing debug lines

* Using default string equals method

---------

Co-authored-by: Gaurav Deshmukh <deshmgau@amazon.com>
2024-01-23 19:32:03 +01:00
Gerd Aschemann
c232346e87
#540 Cache SDKman (#554)
IMPORTANT: Only use SDKman provided Java - System JDK no longer installed!
2024-01-23 19:13:13 +01:00
Jeevjyot Singh Chhabda
415b3eb5c5
b1rc challenge by @jeevjyot (#551)
* 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>
2024-01-23 18:43:58 +01:00
Jaromir Hamala
2c432abb96
jerrinot's improvement - fast-path for short keys (#545)
* 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.
2024-01-23 18:29:22 +01:00
Marek Kohn
2be84e09ee
Add 1brc solution by @makohn (#544) 2024-01-23 18:26:53 +01:00
Rene Schwietzke
6cf6da0c17
Added environment docs (#555)
* Create ENVIRONMENT.md

* More intel added
2024-01-23 18:21:36 +01:00
Gunnar Morling
95c0fb06b0 Leaderboard update 2024-01-23 18:16:12 +01:00
Van Phu DO
98a8279669
use thomaswue trick, use parallelism, slightly faster (#560) 2024-01-23 16:41:25 +01:00
Dr Ian Preston
8bae1b8781
Use simd for name comparison (#568)
Co-authored-by: Ian Preston <ianopolous@protonmail.com>
2024-01-23 16:37:33 +01:00
Antonio Muñoz
f7febea2f6
tonivade implementation (try 2) (#541)
* tonivade implementation

* synchronized block performs better than ReentrantLock

* remove ConcurrentHashMap

* refactor

* use HashMap.newHashMap

* change double to int

* minor refactor

* fix
2024-01-23 16:35:05 +01:00
Elliot Barlas
df891354d3
Inline and optimize value parsing code for each of the four semicolon position processing branches. This provides a small but noticeable speed-up. It also expands and obfuscates the code, unfortunately. (#563) 2024-01-23 16:31:04 +01:00
Sarkie
e16ad7660d
Update README.md to add the _baseline (#552) 2024-01-22 11:00:01 +01:00
Jason Nochlin
b374643a1f
evaluate.sh: Add note for "using Unsafe" (#547)
* 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>
2024-01-22 09:20:26 +01:00
Li Lin
d2639b7ce1
Add linl33's implementation (#503)
* Add linl33's implementation

* Update evaluate.sh

---------

Co-authored-by: Gunnar Morling <gunnar.morling@googlemail.com>
2024-01-21 21:14:05 +01:00
Gunnar Morling
81963f963c Leaderboard update 2024-01-21 20:39:20 +01:00
Artsiom Korzun
ac4805ee45
subprocess spawner (#542) 2024-01-21 20:23:48 +01:00
Roy van Rijn
d8b071c878
Reverting ByteBuffer idea, using Thomas's trick instead. (#538) 2024-01-21 20:15:07 +01:00
Thomas Wuerthinger
d0a28599c2
Tuning and subprocess spawn for thomaswue (#533)
* 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%.
2024-01-21 20:13:48 +01:00
Artsiom Korzun
6b95ac6113
optimize branches (#534) 2024-01-21 19:54:43 +01:00
Elliot Barlas
47269cf30b
Adjust rolling hash function to operate at int-scale rather than byte-scale. Ensure 8-byte alignment in key buffer for faster comparisons. (#523) 2024-01-21 19:38:32 +01:00
Gunnar Morling
d135bd9521 Leaderboard update 2024-01-21 18:01:52 +01:00
Roman Musin
7bfc7eaec6
Reduce allocations and heap size (#525)
* Reduce allocations

* Shrink the heap size

* Calculate hash when reading name  (50-100ms difference)

* no need to reverse bytes

* bump heap size
2024-01-21 18:01:23 +01:00
Gunnar Morling
3e1951379a #104 Running tests for PRs 2024-01-21 17:44:35 +01:00
Gunnar Morling
38c3e0f1ee Leaderboard update 2024-01-21 13:43:40 +01:00
Van Phu DO
410425c833
reorganize code, little bit faster (#509) 2024-01-21 13:25:18 +01:00
kumarsaurav123
8ba67cbc6d
Use Array to store results instead of grouping by and custom class (#522) 2024-01-21 12:50:36 +01:00
adri
0a7726cc64
Improving first iteration by avoiding string creation as much as possible (#516)
- 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
2024-01-20 21:27:34 +01:00
Gunnar Morling
36ffed1315 Leaderboard update 2024-01-20 21:02:06 +01:00
giovannicuccu
2c1264def9
Solution without unsafe (#507)
Co-authored-by: Giovanni Cuccu <gcuccu@imolainformatica.it>
2024-01-20 21:01:43 +01:00
Shivam Agarwal
f06de5faab
Add 0xshivamagarwal Implementation (#508)
* 0xshivamagarwal implementation

* .

---------

Co-authored-by: Shivam Agarwal <>
2024-01-20 20:54:04 +01:00
karthikeyan97
f49a92019e
using unsafe alone (#512)
* 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>
2024-01-20 20:49:54 +01:00
Yann Moisan
ac26c8b644
Improved version based on rafaelmerino (#511)
* files created by create_fork.sh

* use indexOf

* improved implementation based on rafaelmerino

---------

Co-authored-by: Yann Moisan <yann@zen.ly>
2024-01-20 20:33:14 +01:00
Roman Musin
9100ed6316
Epsilon GC + a number of other small tweaks (#513)
* 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
2024-01-20 20:30:25 +01:00
Dr Ian Preston
062f2bbecf
Introducing the vector api. 1s faster on 4 core i7 (#506)
Co-authored-by: Ian Preston <ianopolous@protonmail.com>
2024-01-20 20:09:40 +01:00
Jaromir Hamala
114ba76d20
jerrinot's improvement (#514)
* refactoring

* segregated heap for names

also a different hashing function. turns out hashing just first word is good enough
2024-01-20 20:06:31 +01:00
Yonatan Graber
e1a0b79259
yonatang solution: a jdk8 friendly, no unsafe code, epsilon-gc friendly solution (#499)
* 1bc challenge, but one that will run using jdk 8 without unsafe and still do reasonably well.

* Better hashtable

* the fastest GC is no GC

* cleanups

* increased hash size

* removed Playground.java

* collision-handling allocation free hashmap

* formatting
2024-01-20 15:02:55 +01:00
Xylitol
8353a1cb3d
Processing byte array backwards (#504) 2024-01-20 14:04:19 +01:00
Gunnar Morling
51f8ecfa43 Leaderboard update 2024-01-20 14:01:46 +01:00
Elliot Barlas
eaf87689f5
Use Arena MemorySegments rather than ByteBuffers. (#505) 2024-01-20 13:56:27 +01:00
Gunnar Morling
f435d64dff Leaderboard update 2024-01-19 22:17:54 +01:00
Roy van Rijn
7c983f3d66
Added dedicated reader (#493)
Started running perf, perhaps this helps. No idea how to use it yet
2024-01-19 22:15:49 +01:00
Juan Parera
f409fe0815
Change data storage improving memory locality (#496) 2024-01-19 22:06:48 +01:00
Van Phu DO
e67920f4af
low collision + fast mixer, more optimization, less if because if is slow (#474) 2024-01-19 22:03:51 +01:00
Artsiom Korzun
586def3620
plain old io (#492)
plain old io
2024-01-19 21:52:55 +01:00
Vemana
6e3893c6a6
Reduce variance by (1) Using common chunks at the end (2) Busy looping (#486)
on automatic closing of ByteBuffers.. previously, a straggler could hold
up closing the ByteBuffers.

Also
- Improve Tracing code
- Parametrize additional options to aid in tuning

Our previous PR was surprising; parallelizing munmap() call did not
yield anywhere near the performance gain I expected. Local machine had
10% gain while testing machine only showed 2% gain. I am still not clear
why it happened and the two best theories I have are
1) Variance due to stragglers (that this change addresses)
2) munmap() is either too fast or too slow relative to the other
   instructions compared to our local machine. I don't know which. We'll
   have to use adaptive tuning, but that's in a different change.
2024-01-19 21:47:55 +01:00
Eve
144a6af164
netrunnereve: more optimizations (#485) 2024-01-19 21:44:22 +01:00
Jin Cong Ho
ce8fe41bd4
Submission #3: jincongho (#482) 2024-01-19 21:40:05 +01:00