Skip to content

Conversation

@smthing
Copy link

@smthing smthing commented Nov 11, 2024

No description provided.

p8 and others added 30 commits July 1, 2024 10:49
The benchmarks currently don't take into account batch updates in MySQL.
This fixes the flaky MySQL updates verification.
* feat: add goravel test case

* feat: optimize code

* fix: query with pool
Co-authored-by: pavel.mash <pavel.mash@inbase.com.ua>
* update beetleX to BeetleX.Light

* update beetlex to beetlex.light

* fix fortunes error

* fix error

* remove beetlex-core-updb

* update

* update benchmark_config

* update

* update

* update

* update RawDb

* update

* update

* update

* update

* update dbraw
Bumps [io.undertow:undertow-core](https://github.com/undertow-io/undertow) from 2.3.12.Final to 2.3.14.Final.
- [Release notes](https://github.com/undertow-io/undertow/releases)
- [Commits](undertow-io/undertow@2.3.12.Final...2.3.14.Final)

---
updated-dependencies:
- dependency-name: io.undertow:undertow-core
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
…/Java/undertow/io.undertow-undertow-core-2.3.14.Final

Bump io.undertow:undertow-core from 2.3.12.Final to 2.3.14.Final in /frameworks/Java/undertow
)

Bumps [mysql2](https://github.com/sidorares/node-mysql2) from 3.9.7 to 3.9.8.
- [Release notes](https://github.com/sidorares/node-mysql2/releases)
- [Changelog](https://github.com/sidorares/node-mysql2/blob/master/Changelog.md)
- [Commits](sidorares/node-mysql2@v3.9.7...v3.9.8)

---
updated-dependencies:
- dependency-name: mysql2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [github.com/gofiber/fiber/v2](https://github.com/gofiber/fiber) from 2.52.1 to 2.52.5.
- [Release notes](https://github.com/gofiber/fiber/releases)
- [Commits](gofiber/fiber@v2.52.1...v2.52.5)

---
updated-dependencies:
- dependency-name: github.com/gofiber/fiber/v2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Update spring-boot to 3.2.4

* Disable open-in-view globally for all tests
open-in-view is unfortunately enabled by default for historical reasons, see spring-projects/spring-boot#7107

This significantly improves performance for requests where db connection is not needed at all, i.e. json & plaintext
db ~3% improvement
json ~17% improvement
query ~no change
update ~no change
fortune ~5% improvement
plaintext ~29% improvement

* Make spring-webflux tests work again
Replaces old milestone version of spring boot with current release 3.2.5
Also replaces ParalllelGC with default one, i.e. G1GC

* Update spring-boot to v3.3.0

* Update to java 21

* Enable virtual threads

* Fix excessive number of queries in JPA tests
... query and follow up update statement must be enclosed in a transaction
)

* [F#/Oxpecker] Switched from Dapper to raw ADO

(cherry picked from commit 2f386186a28f7dc502a3d3c7da35211e12d395f0)

* [F#/Oxpecker] Refactoring

* [F#/Oxpecker] Updated Readme

* [F#/Oxpecker] Updated Readme

* [F#/Oxpecker]  Fixed "versus" field
* Perl Kelp: Fix and modernize

* Perl Kelp: benchmark on multiple web servers

* Perl Kelp: unfreeze framework version, a couple of fixes
* hserver framework submit

* hserver framework submit

* lowercase fix

* Required response header missing: Date fix

* Date format fix

* update hserver version

* update hserver threadPool

* update hserver

* update hserver

* update hserver query

* update hserver query

* Update README.md

* update hserver query

* update hserver query

* update hserver query

* update hserver query

* update hserver query

* update hserver query

* Optimal configuration of hserver framework

* Optimal configuration of hserver framework

* Optimal configuration of hserver framework

* Upgrade hserver Framework version and optimize configuration

* Upgrade hserver Framework version and optimize configuration

* Upgrade hserver Framework version and optimize configuration

* Upgrade hserver Framework version and optimize configuration

* Upgrade hserver Framework version and optimize configuration

* Upgrade hserver Framework version and optimize configuration

* Upgrade hserver Framework version and optimize configuration

* Upgrade hserver Framework version and optimize configuration

* Upgrade hserver Framework version and optimize configuration

* Upgrade hserver Framework version and optimize configuration

* Upgrade hserver Framework version and optimize configuration

* Upgrade hserver Framework version and optimize configuration

* Upgrade hserver Framework version and optimize configuration

* Upgrade hserver Framework version and optimize configuration

* Upgrade hserver Framework version and optimize configuration

* Update pom.xml

Upgrade dependencies, optimize performance.

* Upgrade hserver Framework version and optimize configuration

* Upgrade hserver Framework version and optimize configuration and Optimize log printing

* Update pom.xml

* Update StartApp.java

---------

Co-authored-by: 黑小马 <heixiaoma@gmail.com>
* Other contenders have clearly demonstrated that update benchmark performs better using a prepared statement with a aggregation of tuples instead of a postgres batch with a list of tuple. This change shamelessly borrows the SQL statement uwebsockets (thank you uwebsockets) with a small tweaks for the datatype.

In other words

UPDATE world SET randomNumber = update_data.randomNumber
  FROM (VALUES ($1::int,$2::int),...)
  AS update_data (id, randomNumber)
  WHERE world.id = update_data.id

is superior (in this context) to a batch of UPDATE world SET randomnumber=$1 WHERE id=$2

* Use a single event-loop per CPU instead of the double.

* Trim whitespace in rocker templates, shamelessly borrowed from Quarkus/Vertx benchmark.

* Use a collecting query for fortunes that maps a row to a fortune instance which allocates a single row instance. This avoids allocating intermedary rows object when we map them to Fortune instances.

Xerox tip: TFB Contenders using vertx-pg-client should copy this change to save some cycles.

* Allocate a JsonArray of the right size for the query benchmark, avoid un-necessary string conversion in the generated JSON.

* Avoid using Jackson databind that is actually not needed

* Split reading/writing to the world table in two separate connections for the update benchmark, the hypothesis is that for the update benchmark first read then write to the World table, even though the write depends on the read, each change has a queue (the pipelined statements) and using two connections adds the operation to a queue with a smaller latency.

This seems to give better results in my benchmark, let's see how this behaves out there.

Xerox tip: TFB Contenders using vertx-pg-client should copy this change to save some cycles.

* Bump Vert.x to 4.5.8 and its deps.
* dev environment

* production

* update README

* update for latest httpserver
This makes sure it works on m1/m2 architecture as well.
Linux is capable of resolving the path to the library.
* added Oxygen.jl example with /plaintext and /json tests

* renamed framework from oxygen-jl to oxygen

* renamed top level directory to match framework name

* updated readme
* Added Vapor+Swifql+Ikiga

(cherry picked from commit cf1fc17)

* Fixes so everything compiles

* Another attempt at fixes

* Removed unsupported @retroactive

* Added db benchmark

* FoundationEssentials JSON Coders support

* Added everything else

* Remove ikiga

* remove FoundationPreview due to bug swiftlang/swift-foundation#715

* fix db hostname

* fix fortune  template

* last fixes

* fixed resources

* hb2 compiles successfully

* hb2-postgres compiles

---------

Co-authored-by: Shagit Ziganshin <shaziganshin@cloud.ru>
Co-authored-by: Yakov Shapovalov <yakov.shapovalov@me.com>
* Perl: unify the maximum requests per child value

* Fix Perl Dancer

* Fix Perl Web::Simple

* Fix Perl Plack

* Fix Perl Mojolicious

* Perl Kelp: provide a default benchmark to silence the warning

* Perl Mojolicious: minor adjustments
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.64.0 to 1.64.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](grpc/grpc-go@v1.64.0...v1.64.1)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…works/Go/goravel/src/fiber/google.golang.org/grpc-1.64.1

Bump google.golang.org/grpc from 1.64.0 to 1.64.1 in /frameworks/Go/goravel/src/fiber
Bumps [mysql2](https://github.com/sidorares/node-mysql2) from 3.9.7 to 3.9.8.
- [Release notes](https://github.com/sidorares/node-mysql2/releases)
- [Changelog](https://github.com/sidorares/node-mysql2/blob/master/Changelog.md)
- [Commits](sidorares/node-mysql2@v3.9.7...v3.9.8)

---
updated-dependencies:
- dependency-name: mysql2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
dragosv and others added 29 commits October 22, 2024 07:46
* Added Zig httpz framework

* Zig httpz fortunes
* Enable jit and remove unnecessary files

* Remove reusePort

* Add maintainers walkor

* Use the latest event extension

* Use event-3.1.4

* Add without jit tests

* Fix dockerfile name

* Add space to display_name

* save

* Reuseport
…9266)

Signed-off-by: James R. Perkins <jperkins@redhat.com>
* Adding Zinc framework

* Update num_threads and fixed headers

* Update dependency

* Update build command

* Update Zinc documentation

* Run workflow

* Update Zinc approach

* Update zinc Allocator and plaintext test

* Update zinc dependencies

* bug fix

* Fixed zinc dependencies and port
Co-authored-by: pavel.mash <pavel.mash@inbase.com.ua>
* Update Solon Version To 2.9.1

* Update Solon Version To 2.9.1

* Update Solon Jdk To 21

* Update Solon Jdk To 21

* Update Solon Jdk To 21

* Update Solon Jdk To 21

* Update Solon Jdk To 21

* Update Solon Version To 2.9.2

* Add Solon-Virtual

* Remove solon-virtual

* Update Solon Version To 3.0.2
Don't run every permutation as there isn't a lot of variation.
Limit to running:
- Puma with MySQL (the default)
- Puma with Postgres
- Unicorn with Postgres
- Passenger with Postgres

This remove the following variations which were slower that their
Postgres alternative:
- Unicorn with MySQL
- Passenger with MySQL
Don't run every permutation as there isn't a lot of variation.
Limit to running:
- Puma with MySQL (the default)
- Puma with Postgres
- Unicorn with Postgres
- Passenger with Postgres

This remove the following variations which were slower that their
Postgres alternative:
- Unicorn with MySQL
- Passenger with MySQL
Don't run every permutation as there isn't a lot of variation.
Limit to running:
- Puma with MySQL (the default)
- Puma with Postgres
- Unicorn with Postgres
- Passenger with Postgres

This remove the following variations which were slower that their
Postgres alternative:
- Unicorn with MySQL
- Passenger with MySQL
Bumps [rexml](https://github.com/ruby/rexml) from 3.3.6 to 3.3.9.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](ruby/rexml@v3.3.6...v3.3.9)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…ks/Ruby/rack/rexml-3.3.9

Bump rexml from 3.3.6 to 3.3.9 in /frameworks/Ruby/rack
…#9382)

* Add Swoole and Swow as event-driven stress tests for Workerman.

* Text and json requests using Select event-driven
Reduce connection pool size to avoid connection errors like:

     psycopg2.OperationalError: connection to server at "10.0.0.2", port
     5432 failed: FATAL:  sorry, too many clients already
* perf: switch plaintext and json to one runtime per thread, improving performance.

* perf: remove need for additional vec

* perf: reduce length of query parameter

* perf: increase strength of inlining hint

* perf: reduce query length

* perf: shorten path and use references

* bug: increased length of route in line with requirements
* New updates logic.

Signed-off-by: Santiago Pericas-Geertsen <santiago.pericasgeertsen@oracle.com>

* Set pipelining.

Signed-off-by: Santiago Pericas-Geertsen <santiago.pericasgeertsen@oracle.com>

---------

Signed-off-by: Santiago Pericas-Geertsen <santiago.pericasgeertsen@oracle.com>
…bump the Exposed version to the latest (#9375)

Add `--no-daemon` to the Dockerfile Gradle commands BTW.
…-kotlin-coroutines" (#9374)

* Revamp the "vertx-web-kotlinx" portion project

Changes:
1. bump the Gradle versions and the dependency versions to the latest
1. bump the JVM version to 21 with the new `jvmToolchain` DSL
1. resolve deprecations
1. update the dockerfile to use the `installDist` Gradle task so the time for archiving and unarchiving is saved

* Run the revamped benchmark

There are no build or runtime errors. Single query performance seems to have been improved by 2% with the bumped versions (I think most likely due to Java 21). Vagrant reduces performance by about 20% compared to running directly with Docker.

* Enable io_uring and run the benchmark

The single query performance is improved by 5% - 10%.

* Try fixing the performance issues of the "vertx-web-kotlinx" portion in the "single query" and "JSON serialization" tests in the [Continuous Benchmarking results](https://tfb-status.techempower.com/) by using static kotlinx.serialization serializers

The "vertx-web-kotlinx" results in the Continuous Benchmarking results are much lower than those of the "vertx-web-kotlin-coroutines" portion. See [the latest results](https://www.techempower.com/benchmarks/#section=test&runid=592cab59-a9db-463b-a9c9-33d2f9484e92&hw=ph&test=db) for example.

Looking at the "single query" results, I first suspected that it was caused by there being not enough memory for the JVM runtime, so I added some logging code that prints the memory usage using `Runtime.totalMemory` and `Runtime.maxMemory`. It showed that there was about 7 GB max memory available during the benchmark runs, and the program only used 400 MB to 1 GB. I then tried allocating a 4 GB array during the run to ensure that the memory was usable and it worked with no problem.

Then looking at the "JSON serialization" results again, I saw that "vertx-web-kotlinx" performs a lot worse in this test too, and decided that this is more likely to be the bottleneck. Therefore, the static serializers are provided explicitly and the performance is improved slightly as tested on my machine. (Also, see commit 315b4e3 for an attempt before.) I then copied the "JSON serialization" test code from "vertx-web-kotlin-coroutines" and ran the benchmark to see if there were other factors, such as project configuration differences, affecting the performance, and the answer was no. On my machine, the "JSON serialization" performance of "vertx-web-kotlinx" is about 80% - 85% of that of "vertx-web-kotlin-coroutines". And I think the bottleneck possibly lies in kotlinx.serialization serializing an object to a byte array first and then copying it to a Vert.x buffer.

Remove the broken tag in "vertx-web-kotlin-coroutines" BTW, which was added in commit e53e026, for the benchmark runs without problems now as I tested.

* Update README.md correspondingly

* Add `--no-daemon` to the Gradle command in the Dockerfiles

* Update the "Connection reset" exception to the io_uring one that's ignored in logging

* Use `encodeToBufferedSink` in "kotlinx-serialization-json-okio" with a custom-implemented `VertxBufferSink` in JSON serialization

The "JSON serialization" performance is on par with using `io.vertx.core.json.Json.encodeToBuffer` as tested on my machine after this change.

* Replace Okio with kotlinx-io and remove unneeded code

The "JSON serialization" performance seems to be slightly less.

* Rename 2 classes to clarify

* Use to the new Vert.x coroutine APIs introduced in vert-x3/vertx-lang-kotlin#253 / vert-x3/vertx-lang-kotlin@e841975

There is no noticeable performance degradation in the "plaintext" and "JSON serialization" tests.

* Simply the code introduced in the previous commit by making `MainVerticle` implement `CoroutineRouterSupport`

I didn't go through [the docs](https://vertx.io/docs/vertx-lang-kotlin-coroutines/kotlin/#_vert_x_web) thoroughly before implementing this.

* Revamp the "vertx-web-kotlin-coroutines" portion project too following the changes made to the "vertx-web-kotlinx" portion

The "gradlew" script somehow had incorrect access permissions and is fixed by bumping the Gradle wrapper.

To keep the dependencies consistent with the "vert-web" portion, some dependencies are not updated to the latest versions.

Remove 2 useless `COPY`s in "vertx-web-kotlin-coroutines-postgres.dockerfile" BTW.

* Remove unneeded and incorrect comments

Wrapping something as a Vert.x `Buffer` by implementing the `Buffer` interface is not viable because `BufferImpl` contains casts from a `Buffer` to a `BufferImpl`.
This should improve `rack-jruby` performance.
Also remove `java_tune.sh` from frameworks that no longer test with
JRuby.
* Update Solon Version To 2.9.1

* Update Solon Version To 2.9.1

* Update Solon Jdk To 21

* Update Solon Jdk To 21

* Update Solon Jdk To 21

* Update Solon Jdk To 21

* Update Solon Jdk To 21

* Update Solon Version To 2.9.2

* Add Solon-Virtual

* Remove solon-virtual

* Update Solon Version To 3.0.2

* Add Solon-Vertx

* Tweak description

* Tweak the dockerfile

* Tweak the dockerfile

* Tweak config

* Tweak dockefile name

* Add FilterImpl

* Add FilterImpl

* The json plugin is changed to jackson

* Update Solon Jdk To 23

* Update Solon-Vertx Jdk To 23

* Solon-vertx is restored to jdk 21

* Solon is restored to jdk 21

* Solon-vertx adjusts the Date output format

* Solon is restored to jdk 21
Bumps [io.undertow:undertow-core](https://github.com/undertow-io/undertow) from 2.3.15.Final to 2.3.17.Final.
- [Release notes](https://github.com/undertow-io/undertow/releases)
- [Commits](undertow-io/undertow@2.3.15.Final...2.3.17.Final)

---
updated-dependencies:
- dependency-name: io.undertow:undertow-core
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [github.com/golang-jwt/jwt/v4](https://github.com/golang-jwt/jwt) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/golang-jwt/jwt/releases)
- [Changelog](https://github.com/golang-jwt/jwt/blob/main/VERSION_HISTORY.md)
- [Commits](golang-jwt/jwt@v4.5.0...v4.5.1)

---
updated-dependencies:
- dependency-name: github.com/golang-jwt/jwt/v4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…works/Go/goravel/src/gin/github.com/golang-jwt/jwt/v4-4.5.1

Bump github.com/golang-jwt/jwt/v4 from 4.5.0 to 4.5.1 in /frameworks/Go/goravel/src/gin
Bumps [org.hibernate.validator:hibernate-validator](https://github.com/hibernate/hibernate-validator) from 6.0.20.Final to 6.2.0.Final.
- [Changelog](https://github.com/hibernate/hibernate-validator/blob/6.2.0.Final/changelog.txt)
- [Commits](hibernate/hibernate-validator@6.0.20.Final...6.2.0.Final)

---
updated-dependencies:
- dependency-name: org.hibernate.validator:hibernate-validator
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
…/Java/ninja-standalone/org.hibernate.validator-hibernate-validator-6.2.0.Final

Bump org.hibernate.validator:hibernate-validator from 6.0.20.Final to 6.2.0.Final in /frameworks/Java/ninja-standalone
@smthing smthing merged commit e515c62 into smartboot:master Nov 11, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.