-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ArC build time perf improvement #20290
Conversation
This workflow status is outdated as a new workflow run has been triggered. Failing Jobs - Building 17cf839
Failures⚙️ Initial JDK 11 Build #- Failing: independent-projects/arc/processor
! Skipped: core/test-extension/deployment devtools/bom-descriptor-json devtools/cli and 404 more 📦 independent-projects/arc/processor✖ |
17cf839
to
3685585
Compare
This workflow status is outdated as a new workflow run has been triggered. Failing Jobs - Building 3685585
Failures⚙️ Gradle Tests - JDK 11 #- Failing: integration-tests/gradle
📦 integration-tests/gradle✖ ⚙️ Gradle Tests - JDK 11 Windows #- Failing: integration-tests/gradle
📦 integration-tests/gradle✖ ⚙️ JVM Tests - JDK 11 #- Failing: extensions/arc/deployment independent-projects/arc/tests
! Skipped: core/test-extension/deployment devtools/cli docs and 383 more 📦 extensions/arc/deployment✖ ✖ ✖ ✖ ✖ 📦 independent-projects/arc/tests✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ⚙️ JVM Tests - JDK 11 Windows #- Failing: extensions/arc/deployment independent-projects/arc/tests
! Skipped: core/test-extension/deployment devtools/cli docs and 383 more 📦 extensions/arc/deployment✖ ✖ ✖ ✖ ✖ 📦 independent-projects/arc/tests✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ⚙️ JVM Tests - JDK 16 #- Failing: extensions/arc/deployment independent-projects/arc/tests
! Skipped: core/test-extension/deployment devtools/cli docs and 383 more 📦 extensions/arc/deployment✖ ✖ ✖ ✖ ✖ 📦 independent-projects/arc/tests✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ⚙️ MicroProfile TCKs Tests #- Failing: tcks/microprofile-config tcks/microprofile-fault-tolerance tcks/microprofile-health and 3 more
📦 tcks/microprofile-config✖ ✖ ✖ ✖ ✖ ✖ ✖ 📦 tcks/microprofile-fault-tolerance✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ 📦 tcks/microprofile-health✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ 📦 tcks/microprofile-jwt✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ 📦 tcks/microprofile-metrics/api✖ ✖ ✖ 📦 tcks/microprofile-reactive-messaging✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ ⚙️ Native Tests - Cache #- Failing: integration-tests/infinispan-client
📦 integration-tests/infinispan-client✖ ⚙️ Native Tests - Data4 #- Failing: integration-tests/mongodb-client integration-tests/neo4j integration-tests/redis-client
📦 integration-tests/mongodb-client✖ 📦 integration-tests/neo4j✖ 📦 integration-tests/redis-client✖ ⚙️ Native Tests - Data5 #- Failing: integration-tests/reactive-pg-client
📦 integration-tests/reactive-pg-client✖ ⚙️ Native Tests - Data6 #- Failing: integration-tests/elasticsearch-rest-client integration-tests/elasticsearch-rest-high-level-client
📦 integration-tests/elasticsearch-rest-client✖ 📦 integration-tests/elasticsearch-rest-high-level-client✖ ⚙️ Native Tests - Data7 #- Failing: integration-tests/reactive-db2-client integration-tests/reactive-mysql-client
📦 integration-tests/reactive-db2-client✖ 📦 integration-tests/reactive-mysql-client✖ ⚙️ Native Tests - HTTP #- Failing: integration-tests/rest-client integration-tests/resteasy-reactive-kotlin/standard integration-tests/vertx
📦 integration-tests/rest-client✖ 📦 integration-tests/resteasy-reactive-kotlin/standard✖ 📦 integration-tests/vertx✖ ⚙️ Native Tests - Main #- Failing: integration-tests/main
📦 integration-tests/main✖ ⚙️ Native Tests - Messaging1 #- Failing: integration-tests/kafka integration-tests/kafka-sasl integration-tests/kafka-snappy and 3 more
📦 integration-tests/kafka✖ 📦 integration-tests/kafka-sasl✖ 📦 integration-tests/kafka-snappy✖ 📦 integration-tests/kafka-ssl✖ 📦 integration-tests/kafka-streams✖ 📦 integration-tests/reactive-messaging-kafka✖ ⚙️ Native Tests - Messaging2 #- Failing: integration-tests/artemis-core integration-tests/artemis-jms integration-tests/reactive-messaging-amqp and 1 more
📦 integration-tests/artemis-core✖ 📦 integration-tests/artemis-jms✖ 📦 integration-tests/reactive-messaging-amqp✖ 📦 integration-tests/reactive-messaging-http✖ ⚙️ Native Tests - Misc3 #- Failing: integration-tests/smallrye-config
📦 integration-tests/smallrye-config✖ ⚙️ Native Tests - Security2 #- Failing: integration-tests/oidc integration-tests/oidc-client integration-tests/oidc-client-reactive and 5 more
📦 integration-tests/oidc✖ 📦 integration-tests/oidc-client✖ 📦 integration-tests/oidc-client-reactive✖ 📦 integration-tests/oidc-client-wiremock✖ 📦 integration-tests/oidc-code-flow✖ 📦 integration-tests/oidc-tenancy✖ 📦 integration-tests/oidc-token-propagation✖ 📦 integration-tests/oidc-wiremock✖ ⚙️ Native Tests - Security3 #- Failing: integration-tests/keycloak-authorization integration-tests/smallrye-jwt-token-propagation integration-tests/vault-app
📦 integration-tests/keycloak-authorization✖ 📦 integration-tests/smallrye-jwt-token-propagation✖ 📦 integration-tests/vault-app✖ ⚙️ Native Tests - Spring #- Failing: integration-tests/spring-web
📦 integration-tests/spring-web✖ ⚙️ Native Tests - gRPC #- Failing: integration-tests/grpc-health
📦 integration-tests/grpc-health✖ ✖ |
3685585
to
a1ff159
Compare
independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/BeanDeployment.java
Outdated
Show resolved
Hide resolved
independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/BeanDeployment.java
Outdated
Show resolved
Hide resolved
independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/BeanResolverImpl.java
Show resolved
Hide resolved
This workflow status is outdated as a new workflow run has been triggered. Failing Jobs - Building a1ff159
Full information is available in the Build summary check run. Failures⚙️ JVM Tests - JDK 11 Windows #- Failing: extensions/amazon-lambda/deployment
! Skipped: docs extensions/amazon-lambda-http/deployment extensions/amazon-lambda-rest/deployment and 6 more 📦 extensions/amazon-lambda/deployment✖
⚙️ Native Tests - Misc4 #- Failing: integration-tests/gradle
📦 integration-tests/gradle✖
|
a1ff159
to
9933d0f
Compare
independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/BeanDeployment.java
Outdated
Show resolved
Hide resolved
independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/BeanDeployment.java
Outdated
Show resolved
Hide resolved
Are we planning on merging this? |
There are still some unresolved comments in the PR. And @mkouba is currently on PTO so I'd leave this up until he gets back. |
This removes the need to iterate over all beans when performing resolution. For a project with 2k injection points this saves close to 0.5s on my desktop.
9933d0f
to
4162d5d
Compare
Comments have been addressed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. I'll explore the possibility to use the map for any type that does not declare a wildcard or a type variable and possibly create a follow-up PR.
This PR follows-up on quarkusio#20290 The main improvements are: - do not cache results for java.lang.Object - every bean has this type - use optimized immutable structures; in most cases there will be a single bean for a given type - the key of the map is DotName (i.e. raw type name) so that it can be used for parameterized types as well
This PR follows-up on quarkusio#20290 The main improvements are: - do not cache results for java.lang.Object - every bean has this type - use optimized immutable structures; in most cases there will be a single bean for a given type - the key of the map is DotName (i.e. raw type name) so that it can be used for parameterized types as well
This removes the need to iterate over all beans when performing
resolution. For a project with 2k injection points this saves close to
0.5s on my desktop.