Skip to content
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

Minor performance improvements to MockInjector #1134

Merged
merged 3 commits into from Aug 29, 2023
Merged

Conversation

k163377
Copy link
Contributor

@k163377 k163377 commented Aug 18, 2023

SSIA

Please see the commit comments for detailed changes.

@Raibaz
Copy link
Collaborator

Raibaz commented Aug 28, 2023

I like the usage of fold, thanks!

I don't really understand the reasoning behind moving sortCriteria to the companion object though, since it's being used only in a single place - why did you move it?

@k163377
Copy link
Contributor Author

k163377 commented Aug 28, 2023

Because Function1[] was being instantiated on every call.
I have not checked how much this affects performance, but I believe it is an improvement.

import kotlin.reflect.KFunction

val tmp = compareBy<KFunction<Any>>(
    { -it.parameters.size },
    { fn -> fn.parameters.joinToString(",") { it.type.toString() } }
)
// decompiled
public final class TempKt {
   @NotNull
   private static final Comparator tmp;

   static {
      // `Function1[]` is generated for each call.
      tmp = ComparisonsKt.compareBy(new Function1[]{null.INSTANCE, null.INSTANCE});
   }
}

@Raibaz
Copy link
Collaborator

Raibaz commented Aug 29, 2023

Can you please rebase on top of the master branch? I mistakenly broke the build in a previous commit :(

I fixed it now

@k163377
Copy link
Contributor Author

k163377 commented Aug 29, 2023

Rebased

@Raibaz
Copy link
Collaborator

Raibaz commented Aug 29, 2023

Thanks a lot for putting this together and following up!

@Raibaz Raibaz merged commit a9cedf1 into mockk:master Aug 29, 2023
26 checks passed
@k163377 k163377 deleted the speed-up branch September 8, 2023 19:13
renovate bot added a commit to kotest/kotest that referenced this pull request Feb 5, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [io.mockk:mockk](https://mockk.io)
([source](https://togithub.com/mockk/mockk)) | `1.13.7` -> `1.13.9` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.mockk:mockk/1.13.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.mockk:mockk/1.13.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.mockk:mockk/1.13.7/1.13.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.mockk:mockk/1.13.7/1.13.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>mockk/mockk (io.mockk:mockk)</summary>

### [`v1.13.9`](https://togithub.com/mockk/mockk/releases/tag/1.13.9)

[Compare
Source](https://togithub.com/mockk/mockk/compare/1.13.8...1.13.9)

#### What's Changed

- Remove AllOpen plugin from Android libraries by
[@&#8203;SimonMarquis](https://togithub.com/SimonMarquis) in
[mockk/mockk#1164
- Enforce reproducible builds by
[@&#8203;SimonMarquis](https://togithub.com/SimonMarquis) in
[mockk/mockk#1162
- Fix unit tests errors by using `slf4jOrJulLogging()` by
[@&#8203;SimonMarquis](https://togithub.com/SimonMarquis) in
[mockk/mockk#1166
- Remove KAPT from Android libraries by
[@&#8203;SimonMarquis](https://togithub.com/SimonMarquis) in
[mockk/mockk#1163
- JVM 1.8 source compatibility by
[@&#8203;jeffdgr8](https://togithub.com/jeffdgr8) in
[mockk/mockk#1161
- Specify unique `android.namespace` to resolve warnings by
[@&#8203;kubode](https://togithub.com/kubode) in
[mockk/mockk#1181
- Add scoped mock documentation by
[@&#8203;kshired](https://togithub.com/kshired) in
[mockk/mockk#1175
- Upgrade Gradle to 8.4 by
[@&#8203;geekiyer](https://togithub.com/geekiyer) in
[mockk/mockk#1184
- Fixes infinite recursion when stubbing a fun that returns value class
by [@&#8203;OitoH](https://togithub.com/OitoH) in
[mockk/mockk#1176
- Prevent kover setup failure without Android SDK by
[@&#8203;milgner](https://togithub.com/milgner) in
[mockk/mockk#1193
- Support value classes for non-primitive types by
[@&#8203;milgner](https://togithub.com/milgner) in
[mockk/mockk#1192
- Fix StackOverflowError calling method on spy of class with generic
base class by [@&#8203;flapenna](https://togithub.com/flapenna) in
[mockk/mockk#1195

#### New Contributors

- [@&#8203;jeffdgr8](https://togithub.com/jeffdgr8) made their first
contribution in
[mockk/mockk#1161
- [@&#8203;kshired](https://togithub.com/kshired) made their first
contribution in
[mockk/mockk#1175
- [@&#8203;OitoH](https://togithub.com/OitoH) made their first
contribution in
[mockk/mockk#1176
- [@&#8203;flapenna](https://togithub.com/flapenna) made their first
contribution in
[mockk/mockk#1195

**Full Changelog**:
mockk/mockk@1.13.8...1.13.9

### [`v1.13.8`](https://togithub.com/mockk/mockk/releases/tag/1.13.8)

[Compare
Source](https://togithub.com/mockk/mockk/compare/1.13.7...1.13.8)

#### What's Changed

- Bump googleapis from 20.2.0 to 59.0.0 in /cloud-badge by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[mockk/mockk#482
- Minor performance improvements to MockInjector by
[@&#8203;k163377](https://togithub.com/k163377) in
[mockk/mockk#1134
- Improve log message by
[@&#8203;marcelstoer](https://togithub.com/marcelstoer) in
[mockk/mockk#1117
- Update README.md by [@&#8203;iainism](https://togithub.com/iainism) in
[mockk/mockk#1140
- Update Android test targets by
[@&#8203;LeonRa](https://togithub.com/LeonRa) in
[mockk/mockk#1146
- Fix `IncompatibleClassChangeError` in Android instrumentation test
([#&#8203;1035](https://togithub.com/mockk/mockk/issues/1035)) by
[@&#8203;LeonRa](https://togithub.com/LeonRa) in
[mockk/mockk#1145
- Update Gradle and Android dependencies by
[@&#8203;SimonMarquis](https://togithub.com/SimonMarquis) in
[mockk/mockk#1105
- Update byte-buddy 1.14.6 by
[@&#8203;SimonMarquis](https://togithub.com/SimonMarquis) in
[mockk/mockk#1149
- Remove unused `androidTools` in `Deps.kt` by
[@&#8203;SimonMarquis](https://togithub.com/SimonMarquis) in
[mockk/mockk#1150
- Update Kotlin 1.9.10 by
[@&#8203;SimonMarquis](https://togithub.com/SimonMarquis) in
[mockk/mockk#1148
- Update KotlinX Kover 0.7.3 by
[@&#8203;SimonMarquis](https://togithub.com/SimonMarquis) in
[mockk/mockk#1152
- Remove Kotlin-IR from CI matrix by
[@&#8203;SimonMarquis](https://togithub.com/SimonMarquis) in
[mockk/mockk#1153
- Update Dokka 1.9.0 by
[@&#8203;SimonMarquis](https://togithub.com/SimonMarquis) in
[mockk/mockk#1151
- Fix Kotlin version override in tests by
[@&#8203;SimonMarquis](https://togithub.com/SimonMarquis) in
[mockk/mockk#1154
- Use new Kotlin logo by [@&#8203;Goooler](https://togithub.com/Goooler)
in
[mockk/mockk#1156
- Swap expected/actual in `KotlinVersionOverrideTest.kt` by
[@&#8203;SimonMarquis](https://togithub.com/SimonMarquis) in
[mockk/mockk#1157
- Reduce the use of spread operator to improve performance by
[@&#8203;k163377](https://togithub.com/k163377) in
[mockk/mockk#1143
- update Kotlin and Java Toolchain properties, and setting them in CI by
[@&#8203;aSemy](https://togithub.com/aSemy) in
[mockk/mockk#1056
- Fix `dokkaJavadoc` publishing task by
[@&#8203;SimonMarquis](https://togithub.com/SimonMarquis) in
[mockk/mockk#1160

#### New Contributors

- [@&#8203;dependabot](https://togithub.com/dependabot) made their first
contribution in
[mockk/mockk#482
- [@&#8203;k163377](https://togithub.com/k163377) made their first
contribution in
[mockk/mockk#1134
- [@&#8203;marcelstoer](https://togithub.com/marcelstoer) made their
first contribution in
[mockk/mockk#1117
- [@&#8203;LeonRa](https://togithub.com/LeonRa) made their first
contribution in
[mockk/mockk#1146

**Full Changelog**:
mockk/mockk@1.13.7...1.13.8

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 3am on the first day of the
month" (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/kotest/kotest).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjE1My4yIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIn0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
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.

None yet

2 participants