Commit Graph

595 Commits

Author SHA1 Message Date
Yevhenii Melnyk
c5b7b19e57
melgenek: minor improvements (#655)
* melgenek: minor improvements

* More memory
2024-01-31 18:05:09 +01:00
Gunnar Morling
6013760c78 Leaderboard update 2024-01-31 18:00:25 +01:00
Judekeyser
711aa2395a
Justin's implementation (#666)
* Justin's implementation

* Rename justin to Judekeyser

* Back to previous implementation of vectors

* Reading names as sequences of integers

* Fixing tests

* Scale down the number of NIO workers

---------

Co-authored-by: Justin Dekeyser <justin.dekeyser@Justins-MacBook-Pro.local>
2024-01-31 17:59:50 +01:00
zerninv
11a89d6cb8
Attempt to fix segfault CalculateAverage_zerninv.java (#635)
* attempt to fix segfault, graal native

* fix last bytes for last line handler

* fix typo

* one more attempt
2024-01-31 17:44:50 +01:00
John Ziamos
e2ee4cbc30
give in to the graal (#660) 2024-01-31 17:41:40 +01:00
Andrzej Nestoruk
5728ca9482
copy city byte array only when creating a new record (#653) 2024-01-31 17:26:22 +01:00
nicky
f55317973c
batched writing to disk (#659)
instead of writing result line by line, implemented random.choices for randomisation of multiple stations and writing large batche ot the disk, also instead of "round" just using :.1f which is probably quicker on a large scale, because it's not a mathematical function
2024-01-31 17:07:29 +01:00
Dr Ian Preston
0c5c22882b
Process two consecutive lines at a time (#651)
Use a better hash function

Don't return index from temperature parsing
extra JVM args

Co-authored-by: Ian Preston <ianopolous@protonmail.com>
2024-01-31 17:06:05 +01:00
Gunnar Morling
ab2a9a6fe5
Update README.md 2024-01-31 16:15:50 +01:00
Gunnar Morling
afb7e2c390
Update README.md 2024-01-31 11:59:00 +01:00
Gunnar Morling
bee7197ce9 Leaderboard update 2024-01-31 10:08:56 +01:00
Serkan ÖZAL
f6aa09926c
serkan-ozal's 6th submission: (#667)
- process multiple lines at a time to get the benefit of ILP (Instruction Level Parallelism) better
2024-01-31 09:56:11 +01:00
Quan Anh Mai
1a4ac0d249
Final submission (#669)
* more efficient max, min

* optimize pipeline

* apply parallel to both submissions

* fix bug
2024-01-31 09:47:48 +01:00
Anita SV
af2b5517c8
anitasv 3.8s vs 3m 19s : Improved using custom hashmap. (#672)
* Some optimizations while staying safe

* bug fix not caught on tests
2024-01-31 09:41:33 +01:00
Arman Sharif
974ddbae60
armandino: misc improvements (#673) 2024-01-31 09:39:08 +01:00
Thomas Wuerthinger
a5ce4ba771
Added comments to used flags, clean up code, final fine tuning. (#674) 2024-01-31 09:34:15 +01:00
Gunnar Morling
7f0e517811 Leaderboard update 2024-01-29 22:28:17 +01:00
Jaime Polidura
2a44f8d390
Added improvments on string copying, string comparation & calculation of next index in case of collision in custom map (#650)
* added code

* Fixed pointers bugs

* removed my own benchmark

* added comment on how I handle hash collisions

* executed mwvn clean verify

* made scripts executable & fixed rounding issues

* Fixed way of dealing with hash collisions

* changed method name sameNameBytes to isSameNameBytes

* changes script from sh to bash

* fixed chunking bug

* Fixed bug in chunking when file size is too small

* added Runtime.getRuntime().availableProcessors

* added improvemnts on string copying, calculation of next index of Map in case on collision & improved string comparing
2024-01-29 22:22:22 +01:00
Thomas Wuerthinger
036f9a01b1
Clean up, fine tuning, credit section for thomaswue (#646)
* Some clean up, fine tuning, removing non-supported options, added credit
section and additional comments.

* Put license header year back to 2023 to pass checks.

* Remove static linking (as it requires some more setup on the target
machine).
2024-01-29 22:19:23 +01:00
Serkan ÖZAL
5b9703283a
serkan-ozal's 5th submission: (#648)
- use region address directly over null base memory address to get rid of extra offset calculation
2024-01-29 22:11:27 +01:00
Dr Ian Preston
c351056524
fix ordering in README.md (#649) 2024-01-29 22:06:21 +01:00
Gunnar Morling
8fbd632580 Leaderboard update 2024-01-29 21:36:45 +01:00
Paweł Adamski
d9d2f3f97f
Paweł Adamski - 1brc submission (#629)
* Paweł Adamski - 1BRC challenge

* Paweł Adamski - 1BRC challenge

* Make files executabe
2024-01-29 21:35:51 +01:00
Serkan ÖZAL
7d52a37600
serkan-ozal's 4th submission: (#645)
- split big regions into shared smaller tasks, so the workers complete their own tasks can pick up from the remaining instead of leaving its core idle
- reduce number of executed instructions in the hot path
2024-01-29 21:27:06 +01:00
tivrfoa
f4a0039a59
Try more chunks than threads, and of different sizes (#644)
/**
 * Solution based on thomaswue solution, commit:
 * commit d0a28599c2
 * Author: Thomas Wuerthinger
 * Date:   Sun Jan 21 20:13:48 2024 +0100
 *
 * The goal here was to try to improve the runtime of his 10k
 * solution of: 00:04.516
 *
 * With Thomas latest changes, his time is probably much better
 * already, and maybe even 1st place for the 10k too.
 * See: https://github.com/gunnarmorling/1brc/pull/606
 *
 * But as I was already coding something, I'll submit just to
 * see if it will be faster than his *previous* 10k time of
 * 00:04.516
 *
 * Changes:
 *   It's a similar idea of my previous solution, that if you split
 * the chunks evenly, some threads might finish much faster and
 * stay idle, so:
 *   1) Create more chunks than threads, so the ones that finish first
 * can do something;
 *   2) Decrease chunk sizes as we get closer to the end of the file.
 */
2024-01-29 21:24:04 +01:00
Van Phu DO
8e407ca79d
apply loop unroll trick (#643)
* apply loop unroll trick

* less assign op, a bit faster
2024-01-29 21:21:04 +01:00
Panagiotis Drakatos
31a6740ef1
New Fresh Solution to Optimize Execution time (#641)
* CalculateAverage_pdrakatos

* Rename to be valid with rules

* CalculateAverage_pdrakatos

* Rename to be valid with rules

* Changes on scripts execution

* Fixing bugs causing scripts not to be executed

* Changes on prepare make it compatible

* Fixing passing all tests

* Increase direct memory allocation buffer

* Fixing memory problem causes heap space exception

* Fresh solution to optimize performance of the execution
2024-01-29 21:16:40 +01:00
giovannicuccu
1281e77be4
new version by Giovanni Cuccu (#640)
* Solution without unsafe

* Solution without unsafe

* Solution without unsafe, remove the usage of bytebuffer, passes the create_measurements3 test

* bug fix for 10k test, update also the CreateMeasurements3.java to use '\n' as newline instead of the os value (if it runs on windows it uses crlf and "breaks" the file format )

* new version that should perform way better than the previous one

* removed prepare script for giovannicuccu

* removed some comments

---------

Co-authored-by: Giovanni Cuccu <gcuccu@imolainformatica.it>
2024-01-29 21:12:05 +01:00
Yavuz Tas
a82cf2ceb7
improve speed, thanks to the following improvements: (#550)
* improve speed, thanks to the following improvements:
- loop unrolling and eleminating extra calculations
- eleminating instance level variable access
- quicker equals check, checking long by long chunks instead of bytes
- update GraalVM version to the latest

* faster equals check

* fix equals bug in 10K, more optimizations on equals and calculate hash parts

* New solution optimized for Linux/AMD hardware

* Optimize solution, try to fix 10K bug on native

* Optimize solution, move records to a local field

* test timing

* revert back accidentally pushed code

---------

Co-authored-by: Yavuz Tas <yavuz.tas@ing.com>
2024-01-29 21:02:20 +01:00
Marko Topolnik
886f0cdb4d
mtopolnik submission 3 (#637)
* calculate_average_mtopolnik

* short hash (just first 8 bytes of name)

* Remove unneeded checks

* Remove archiving classes

* 2x larger hashtable

* Add "set" to setters

* Simplify parsing temperature, remove newline search

* Reduce the size of the name slot

* Store name length and use to detect collision

* Reduce memory loads in parseTemperature

* Use short for min/max

* Extract constant for semicolon

* Fix script header

* Explicit bash shell in shebang

* Inline usage of broadcast semicolon

* Try vectorization

* Remove vectorization

* Go Unsafe

* Use SWAR temperature parsing by merykitty

* Inline some things

* Remove commented-out MemorySegment usage

* Inline namesMem.asSlice() invocation

* Try out JVM JIT flags

* Implement strcmp

* Remove unused instance variables

* Optimize hashing

* Put station name into hashtable

* Reorder method

* Remove usage of MemorySegment.getUtf8String

Replace with UNSAFE.copyMemory() and new String()

* Fix hashing bug

* Remove outdated comments

* Fix informative constants

* Use broadcastByte() more

* Improve method naming

* More hashing

* Revert more hashing

* Add commented-out code to hash 16 bytes

* Slight cleanup

* Align hashtable at cacheline boundary

* Add Graal Native image

* Revert Graal Native image

This reverts commit d916a42326d89bd1a841bbbecfae185adb8679d7.

* Simplify shell script (no SDK selection)

* Move a constant, zero out hashtable on start

* Better name comparison

* Add prepare_mtopolnik.sh

* Cleaner idiom in name comparison

* AND instead of MOD for hashtable indexing

* Improve word masking code

* Fix formatting

* Reduce memory loads

* Remove endianness checks

* Avoid hash == 0 problem

* Fix subtle bug

* MergeSort of parellel results

* Touch up perf

* Touch up perf

* Remove -Xmx256m

* Extract result printing method

* Print allocation details on OOME

* Single mmap

* Use global allocation arena

* Add commented-out Xmx64m XXMaxDirectMemorySize=1g

* withinSafeZone

* Update cursor earlier

* Better assert

* Fix bug in addrOfSemicolonSafe

* Move declaration lower

* Simplify code

* Add rounding error test case

* Fix DANGER_ZONE_LEN

* Deoptimize parseTemperatureSimple()

* Inline parseTemperatureAndAdvanceCursor()

* Skip masking until the last load

* Conditionally fetch name words

* Cleanup

* Use native image

* Use supbrocess

* Simpler code

* Cleanup

* Avoid extra condition on hot path
2024-01-29 20:51:52 +01:00
Artsiom Korzun
5ba094c8fd
loop similar to thomas (#634) 2024-01-29 20:36:25 +01:00
Gunnar Morling
1eaf8791c1
Adding some articles 2024-01-29 10:00:39 +01:00
Gunnar Morling
eeed048466 Leaderboard update 2024-01-29 08:55:20 +01:00
Gunnar Morling
2b55f0dd6b Leaderboard update 2024-01-28 23:43:07 +01:00
Jaime Polidura
3ed80c4b5f
Thank you for the challange!! (#599)
* added code

* Fixed pointers bugs

* removed my own benchmark

* added comment on how I handle hash collisions

* executed mwvn clean verify

* made scripts executable & fixed rounding issues

* Fixed way of dealing with hash collisions

* changed method name sameNameBytes to isSameNameBytes

* changes script from sh to bash

* fixed chunking bug

* Fixed bug in chunking when file size is too small

* added Runtime.getRuntime().availableProcessors
2024-01-28 23:31:03 +01:00
giovannicuccu
be5b3318b1
Solution without unsafe using vector API (#602)
* Solution without unsafe

* Solution without unsafe

* Solution without unsafe, remove the usage of bytebuffer, passes the create_measurements3 test

* bug fix for 10k test, update also the CreateMeasurements3.java to use '\n' as newline instead of the os value (if it runs on windows it uses crlf and "breaks" the file format )

---------

Co-authored-by: Giovanni Cuccu <gcuccu@imolainformatica.it>
2024-01-28 23:24:47 +01:00
Serkan ÖZAL
46d375e621
serkan-ozal's 3rd submission with some minor improvements: (#615)
- faster merge by ignoring empty entries in the map
- enable CDS for faster startup (added `prepare_serkan-ozal.sh` to generate CDS archive in advance)
- some tweaks with JVM options
- optimized result printing
2024-01-28 23:02:01 +01:00
Andrzej Nestoruk
ff35a4628b
anestoruk second attempt (#625)
* initial implementation

* few improvements and a cleanup (down to ~12s)

* use array instead of hashmap for collecting partial results
2024-01-28 22:59:04 +01:00
Artsiom Korzun
9282fb7b0a
processing three at once (#626) 2024-01-28 22:56:33 +01:00
Gunnar Morling
99a754d0cd
Update pull_request_template.md 2024-01-28 22:52:44 +01:00
Gunnar Morling
87f3b71701
Update pull_request_template.md 2024-01-28 22:52:29 +01:00
Gunnar Morling
99367dbc50
Update pull_request_template.md 2024-01-28 22:52:12 +01:00
Aleksey Shipilëv
82197d4482
shipilev: Amendments to version 4 (#627)
* Amendments

* One more locality touchup: no need to carry the entire name array
2024-01-28 22:49:34 +01:00
Jaromir Hamala
9da1660ba5
jerrinot - running out of ideas (#631)
* another shameless copycat from thomas: less safepoints

* I have no idea what I am doing
2024-01-28 22:43:53 +01:00
Dr Ian Preston
3a790c99b9
Reduce preferred vector size (#622)
Co-authored-by: Ian Preston <ianopolous@protonmail.com>
2024-01-28 22:39:17 +01:00
Gunnar Morling
bb9bc68e41 Fixing link 2024-01-28 21:55:52 +01:00
Gunnar Morling
f98304e4a7 Fixing leaderboard entries with difference between user name and class name 2024-01-28 20:43:16 +01:00
Gunnar Morling
2bb74fe071 Leaderboard update 2024-01-28 18:37:11 +01:00
Aleksey Shipilëv
baed56bcdb
Version 4 (#183) 2024-01-28 18:36:22 +01:00
Gunnar Morling
5dffd8e9b3 Leaderboard update 2024-01-28 18:33:07 +01:00