aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* isolgpus: submission 2 - about a 25% improvement on submission 1. (#168)Jamie Stansfield2024-01-071-47/+51
| | | | | | | | | | | | | * isolgpus: fix chunk sizing when not at 8 threads use as many cores as are available don't buffer the station name, only use it when we need it. get rid of the main branch move variables inside the loop * isolgpus: optimistically assume we can read a whole int for the station name, but roll back if we get it wrong. This should be very beneficial on a dataset where station names are mostly over 4 chars --------- Co-authored-by: Jamie Stansfield <jalstansfield@gmail.com>
* Use SIMD for search for delimiter and name compareThomas Wuerthinger2024-01-071-52/+100
|
* Add yehwankim23 (#148)김예환 Ye-Hwan Kim (Sam)2024-01-071-0/+105
|
* My implementation is in dev.morling.onebrc.CalculateAverage_obourgain and ↵Olivier Bourgain2024-01-071-0/+481
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | runnable with provided script calculate_average_obourgain.sh (#75) Runs with standard JDK 21. On my computers (i5 13500, 20 cores, 32GB ram) my best run is (file fully in page cache): 49.78user 0.69system 0:02.81elapsed 1795%CPU A bit older version of the code on Mac pro M1 32 GB: real 0m2.867s user 0m23.956s sys 0m1.329s As I wrote in comments in the code, I have a few different roundings that the reference implementation. I have seend that there is an issue about that, but no specific rule yet. Main points: - use MemorySegment, it's faster than ByteBuffer - split the work in a lot of chunks and distribute to a thread pool - fast measurement parser by using a lot of domain knowledge - very low allocation - visit each byte only once Things I tried that were in fact pessimizations: - use some internal JDK code to vectorize the hashCode computation - use a MemorySegment to represent the keys instead of byte[], to avoid copying Hope I won't have a bad surprise when running on the target server 😱
* Roy: Adding a bit of unsafe...Roy van Rijn2024-01-071-254/+155
| | | Co-authored-by: Gunnar Morling <gunnar.morling@googlemail.com>
* first attemptags2024-01-071-0/+250
|
* Initial Implementation - coolmineman (#196)Cool_Mineman2024-01-071-0/+280
| | | | | | | | | | | | | | | | | | | | | * start * slower * still bad * finally faster than baseline :) * starting to go fast * improve * we ball * fix race condition an newline * change threadpool * ~18sec on my machine
* 1brc submission - Kevin McMurtrie (#195)Kevin McMurtrie2024-01-071-0/+516
| | | | | * v1 * Fix sorting
* An implementation optimised for simplicity/readability.John2024-01-071-0/+320
|
* Leaderboard updateGunnar Morling2024-01-071-2/+2
|
* CalculateAverage semotpan attempt 1Serghei Motpan2024-01-071-0/+199
|
* Implements CalculateAverage_santanu.javaSantanu Barua2024-01-071-0/+62
| | | | | | Execution time: 1 minute and 27.863 seconds System specs: Apple M1, 8 cores, 16GB RAM Co-authored-by: santanu barua <santanu@host109.private.net>
* Optimised Code to use FileSegments with ByteBuffer (#184)Keshavram Kuduwa2024-01-071-48/+156
| | | | | | | | | | | | | | | | | * Keshavram Kuduwa's Submission * Resolves #102 and Code Optimizations * Resolves #102 and Code Optimizations * Optimised Code with Roy's Reference * Fixed Tests * Clean Up Code --------- Co-authored-by: Keshavram Kuduwa <keshavram.kuduwa@apptware.com>
* Continue unrolling and inlining value parser. Make targeted use of ↵Elliot Barlas2024-01-071-43/+78
| | | | ByteBuffer.getInt() instead of ByteBuffer.get(). Switch from GraalVM CE to GraalVM. (#201)
* Add entry by Andrew SunAndrew Sun2024-01-071-0/+329
|
* Experiment from entangled90Carlo2024-01-071-0/+328
| | | | | | | | | | | | | | | | | | | | | * single thread memory mapped file reader, pool of processors * cleanup of inner classes of MetricProcessor * doubles are parsed without external functions, strings are lazily created from byte arrays * remove load() MappedByteBuffer in memory * fixed handling of newline * fix a bug & correct locale used * MappedByteBuffer size set to 1MB * fixed rounding * Do not use ArrayBlockingQueue.offer since it drops elements when queue is full * MappedByteBuffer size = 32 MB
* Adding kgeri's solution (#137)Gergely Kiss2024-01-071-0/+229
| | | | | | | | | | | | | | | | | | | * Adding kgeri's solution * parallelizing CalculatorAverage_kgeri * fixing aggregation bugs, chunk size calc for small files * removed GC logging Co-authored-by: Gunnar Morling <gunnar.morling@googlemail.com> * fix for when there's no newline at end of input * fix for when the final record ends on the chunk boundary --------- Co-authored-by: Gunnar Morling <gunnar.morling@googlemail.com>
* ddimtirov - supporting hash collisions, should have fixed #101Dimitar Dimitrov2024-01-061-101/+177
| | | | * ddimtirov - supporting hash collisions, should have fixed #101 * Make life easier for Windows user who need to use WSL to run the tests
* Improvement in CalculateAverage_yavuztas (#162)Yavuz Tas2024-01-061-55/+82
| | | | | | | | | | | | | | | | | | | * improve double reading by eleminating string parsing in between, make calculations over on integer instead of double, parse into double at the end only once * more improvements, sharing a single StringBuilder to build all toStrings, minor performance gain. * micro optimizations on reading temperature * a small skip for redundant traverses, micro optmization * micro optimization, eleminate some if cases, saves 0.5 seconds more * micro optimization, calculate key hash ahead eleminates more more loop, saves 0.5 seconds more :) * optimize key equals and handling the case when a region is larger than max integer size --------- Co-authored-by: Yavuz Tas <yavuz.tas@ing.com>
* Mudit/initial attempt (#41)Mudit Saxena2024-01-061-0/+157
| | | | | | | | | | | * Initial version with multiple ideas * Added virtual thread implementation based on certain task size * Removed evaluate file * Fixed test issues * Added a custom input split
* Updating leaderboard, formatting, avoiding OOMEGunnar Morling2024-01-061-20/+19
|
* my first try to 1BRC!Rafael Merino García2024-01-061-0/+293
| | | | | | | | | | | | | | | | | | * first try * format * Update calculate_average_imrafaelmerino.sh Co-authored-by: Gunnar Morling <gunnar.morling@googlemail.com> * Update src/main/java/dev/morling/onebrc/CalculateAverage_imrafaelmerino.java Co-authored-by: Gunnar Morling <gunnar.morling@googlemail.com> --------- Co-authored-by: Rafael Merino García <imrafaelmerino@gmail.com> Co-authored-by: Gunnar Morling <gunnar.morling@googlemail.com>
* Add solution by flippingbits - Use SIMD for computing aggregatesStefan Sprenger2024-01-061-0/+211
| | | | | | | * feat(flippingbits): First revision * chore(flippingbits): Clean up output * fix(flippingbits): Use ShortVector.SPECIES_MAX
* hchiorean - Initial versionHoria Chiorean2024-01-061-0/+205
| | | | | | | * Initial version * Removed some System out messages and tweaked some config values * Added some fixes and some tweaks
* merykitty's attemptQuan Anh Mai2024-01-061-0/+391
| | | | | | | | | | | | | | | | | | | * first commit * fix test * concurrency * format for easier to follow explanation * fix large keys * fix overlapping ranges * prefetch file * add comments, remove prefetching * typo
* Implementation of 1brc - felix19350 (#53)Bruno Félix2024-01-061-0/+237
| | | | | | | | | | | | | * Implementation of 1brc - felix19350 * Added license header * Fixed failing tests * Replaced parsing of doubles with a custom parser and integer arithmetic --------- Co-authored-by: Bruno Felix <bruno.felix@klarna.com>
* Fix #159Michael Berry2024-01-061-1/+1
|
* Initial version for thomaswue with Oracle GraalVM Native ImageThomas Wuerthinger2024-01-061-0/+212
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Initial version. * Make PGO feature optional off-by-default. Needs PGO_MODE environment variable to be set. Add -O3 -march=native tuning flags for better performance. * Adjust script to be more quiet. * Adjust max city length. Fix an issue when accumulating results. * Tune thomaswue submission. mmap the entire file, use Unsafe directly instead of ByteBuffer, avoid byte[] copies. These tricks give a ~30% speedup, over an already fast implementation. * Optimize parsing of numbers based on specific given constraints. * Fix for segment calculation for case of very small input. * Minor shell script fixes. * Separate out build step into file additional_build_step_thomaswue.sh, simplify run script and remove PGO option for now. * Minor corrections to the run script. --------- Co-authored-by: Alfonso² Peterssen <alfonso.peterssen@oracle.com>
* seijikun: Fix new unit-test introduced with #125Markus Ebner2024-01-061-5/+1
|
* More detailed attributionMarko Topolnik2024-01-061-2/+7
|
* One more sample in test fileMarko Topolnik2024-01-062-1/+2
|
* Improve name generationMarko Topolnik2024-01-061-8/+23
|
* Limit names to 100 bytesMarko Topolnik2024-01-063-33/+50
|
* Move attribution into weather_stations.csvMarko Topolnik2024-01-061-1/+2
|
* Add test sample with a worst-case UTF-8 nameMarko Topolnik2024-01-062-0/+33
|
* Eliminate duplicate station namesMarko Topolnik2024-01-061-8/+21
|
* Generate measurements with random namesMarko Topolnik2024-01-061-0/+128
| | | Name length goes from 1 to 100.
* 1 brc - 2gb memory 1 min 31 secsAbhilash2024-01-061-0/+70
|
* Adjust buffer size to solve test failure in #125twobiers2024-01-061-1/+1
|
* A solution with Actor Model concurrency and MappedByteBufferYavuz Tas2024-01-051-0/+287
| | | | | | | | | | | | | | | | | | | * A solution with Actor Model concurrency and MappedByteBuffer * fix test cases * revert back the file name to original * cache String hashCode calculation via composing with Key object * fix wrong key caching and eleminate duplicate String creation between actors * update possible char count in a line, fix calculate_average.sh * increase possible line length to 256 bytes, much safer to cover 100 chars I hope --------- Co-authored-by: Yavuz Tas <yavuz.tas@ing.com>
* CalculateAverage_truelive second attemptRoman Schweitzer2024-01-051-67/+37
| | | | | | | | | | | | | | | | | * cleanup * getDouble new double parser * parseBuffer more reliable * use graalvm to execute * cleanup * cleanup * fix formatting * fix graalvm init and launch script
* artpar's attempt Parth Mudgal2024-01-051-0/+376
| | | | | | | | | | | | | | | | | | | | | | | | * artpar's attempt * artpar's attempt * remove int -> Integer conversions, custom parsing for measurements * remove allocations by caching station names also remove Integer and use int instead to remove valueOf calls * Fix result mismatch errors * parse int instead of double * reduce time spent reading the mapped buffer * cleanup unused memory * less is faster ? vector addition doesn't look worth it * backout from virtual threads as well * Fix breaking tests
* gabrielreid's first attemptgreid2024-01-051-0/+457
| | | | | | | | | Somewhat mixed collection of multiple ideas, mostly based initially on using the new JDK Vector API for extracting offsets of newlines and semicolons. Runs locally in just under 11 seconds on 1B rows of input on a 2020 M1 Macbook Air.
* isolgpus: submission 1Jamie Stansfield2024-01-051-0/+293
| | | | | | | | | | | | | | | | | | | | | | | * isolgpus: submission 1 * isolgpus: fix min value bug (breaks if a negative temperature never appears) * isolgpus: remove unused collector * isolgpus: fix split on chunk bug * isolgpus: change name equality algo to a cheaper check. * isolgpus: fix chunking state to cope with last byte of last chunk * isolgpus: hash as we go, instead of at the end * isolgpus: adjust thread count to core count * isolgpus: change cores to 8 statically --------- Co-authored-by: Jamie Stansfield <jalstansfield@gmail.com>
* Improve spullara's solutionYunus Inci2024-01-051-0/+217
|
* Adding Johannes Schüth's submissionJohannes Schüth2024-01-051-0/+214
|
* rby: Has some interesting optimisations but could be improved further with a ↵Ramzi Ben Yahya2024-01-051-0/+223
| | | | | | | | | custom hash map * rby: Could be improved with a custom hashmap * Flag not needed * Fixes the tests when running ./test.sh rby
* Twobier's submissionTobi2024-01-051-0/+295
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * First performance tweaks * further tweaks * collect into a treemap * Tweak JVM options * Inline rounding into collector * reduce some operations * oops, add missing braces * tweak JVM options * small fixes * add min and max to processing * fix min * remove compact strings * replace sumWithCompensation with naive sum implementation * use UseShenandoahGC * integrate mmap * integrate mmap * Fix messed up array logic * Set jdk version
* Update seijikun implementationMarkus Ebner2024-01-051-76/+145
| | | | | | | | | | | | | | | | | | | | | * Use Integer calculation instead of double, add unit-test * Bring back StationIdent optimization Originally, StationIdent was using byte[] to store names, so the extra String allocation could be avoided. However, that produced incorrect sorting. Sorting is now moved to the result merging step. Here, names are converted to Strings. * Implement readStationName with SIMD 256bit * Rebase and cleanup test code, now that it's in the project * Fix seijikun formatting * Fix test failure in specific jobCnt edge-cases * Also switch to graalvm
* initial deemkeendeemkeen2024-01-051-0/+264
|