Commit Graph

702 Commits

Author SHA1 Message Date
Dr Ian Preston
f1fd7b7fe5 actually use jvm args! (#688)
Co-authored-by: Ian Preston <ianopolous@protonmail.com>
2024-01-31 20:05:47 +01:00
Van Phu DO
3c454d0222 final version for abeobk (#654)
* final version

* Correct stupid mistake

* min/max trick does not help that much, setting initial value does.

* cut the tail
2024-01-31 20:03:20 +01:00
Gunnar Morling
f0f6570975 Leaderboard update 2024-01-31 18:30:47 +01:00
Serkan ÖZAL
6a2e5058af serkan-ozal's 7th submission: (#679)
- use smaller regions (increased region count) so there will be less idle time for the workers who completed their tasks
- get rid of some configuration related stuff during initialization which might save a few tens of milliseconds hopefully
- update temperature value parsing instruction order to get benefit of ILP better (hopefully)
2024-01-31 18:21:25 +01:00
Jaromir Hamala
9b9bb8ed3f jerrinot - final(?) improvements (#690)
* decrease instruction level parallelism

it turns out doing 2 things was too much. perf annotate showed spilling.

* more trickery with latency hiding

* work-stealing, lookp tables, credits

* do not assume gender
2024-01-31 18:17:34 +01:00
Roman Stoffel
b529ef2a59 Gamlerhart Last Update: Disabling GC (#636)
* Disable The GC

Cuts off sometimes up to 1 seconds
of runtime on my machine.

* Remove Confusing Byte-Order Parameter

Bytes have no Byte-Order ;)

* Provide More Memory to Run the 10K set

* Fix Comparison Function
2024-01-31 18:13:08 +01:00
Peter Levart
3cc4fc85d8 update1: restructuring for better compilation (#661) 2024-01-31 18:07:56 +01:00
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