aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* My implementation is in dev.morling.onebrc.CalculateAverage_obourgain and ↵Olivier Bourgain2024-01-072-0/+512
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 😱
* Leaderboard updateGunnar Morling2024-01-071-2/+2
|
* Roy: Adding a bit of unsafe...Roy van Rijn2024-01-071-254/+155
| | | Co-authored-by: Gunnar Morling <gunnar.morling@googlemail.com>
* Removing App CDS from Roy's submissionGunnar Morling2024-01-071-7/+2
|
* Leaderboard updateGunnar Morling2024-01-071-0/+1
|
* first attemptags2024-01-072-0/+272
|
* Leaderboard updateGunnar Morling2024-01-071-0/+1
|
* Initial Implementation - coolmineman (#196)Cool_Mineman2024-01-072-0/+310
| | | | | | | | | | | | | | | | | | | | | * 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
* Update pull_request_template.mdGunnar Morling2024-01-071-3/+4
|
* Leaderboard updateGunnar Morling2024-01-071-0/+2
|
* 1brc submission - Kevin McMurtrie (#195)Kevin McMurtrie2024-01-072-0/+539
| | | | | * v1 * Fix sorting
* An implementation optimised for simplicity/readability.John2024-01-072-0/+340
|
* Leaderboard updateGunnar Morling2024-01-072-5/+10
|
* CalculateAverage semotpan attempt 1Serghei Motpan2024-01-072-0/+219
|
* Implements CalculateAverage_santanu.javaSantanu Barua2024-01-072-0/+82
| | | | | | 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-072-44/+79
| | | | ByteBuffer.getInt() instead of ByteBuffer.get(). Switch from GraalVM CE to GraalVM. (#201)
* Add entry by Andrew SunAndrew Sun2024-01-072-0/+352
|
* Experiment from entangled90Carlo2024-01-072-0/+348
| | | | | | | | | | | | | | | | | | | | | * 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-072-0/+249
| | | | | | | | | | | | | | | | | | | * 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>
* InfraGunnar Morling2024-01-071-1/+1
|
* InfraGunnar Morling2024-01-071-0/+22
|
* Leaderboard updateGunnar Morling2024-01-061-1/+3
|
* ddimtirov - supporting hash collisions, should have fixed #101Dimitar Dimitrov2024-01-063-102/+194
| | | | * 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-062-0/+176
| | | | | | | | | | | * 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 leaderboardGunnar Morling2024-01-061-0/+1
|
* Updating leaderboard, formatting, avoiding OOMEGunnar Morling2024-01-063-22/+24
|
* my first try to 1BRC!Rafael Merino García2024-01-062-0/+317
| | | | | | | | | | | | | | | | | | * 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-062-0/+232
| | | | | | | * feat(flippingbits): First revision * chore(flippingbits): Clean up output * fix(flippingbits): Use ShortVector.SPECIES_MAX
* hchiorean - Initial versionHoria Chiorean2024-01-062-0/+224
| | | | | | | * Initial version * Removed some System out messages and tweaked some config values * Added some fixes and some tweaks
* Leaderboard updateGunnar Morling2024-01-061-3/+4
|
* merykitty's attemptQuan Anh Mai2024-01-062-0/+411
| | | | | | | | | | | | | | | | | | | * first commit * fix test * concurrency * format for easier to follow explanation * fix large keys * fix overlapping ranges * prefetch file * add comments, remove prefetching * typo
* Update README.mdGunnar Morling2024-01-061-1/+1
|
* Update README.mdGunnar Morling2024-01-061-1/+1
|
* Update README.mdGunnar Morling2024-01-061-0/+5
|
* Implementation of 1brc - felix19350 (#53)Bruno Félix2024-01-062-0/+257
| | | | | | | | | | | | | * 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
|
* Leaderboard updateGunnar Morling2024-01-061-4/+5
|
* Initial version for thomaswue with Oracle GraalVM Native ImageThomas Wuerthinger2024-01-063-0/+262
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
|
* Adding missing ")"Gunnar Morling2024-01-061-1/+1
|
* More detailed attributionMarko Topolnik2024-01-062-2/+8
|
* 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-062-1/+3
|
* 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-063-0/+44838
| | | Name length goes from 1 to 100.