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

Reduce the use of spread operator to improve performance #1143

Merged
merged 2 commits into from Sep 18, 2023

Conversation

k163377
Copy link
Contributor

@k163377 k163377 commented Sep 8, 2023

Resolves #1139

val factory = MockKGateway.implementation().staticMockFactory

classes.forEach {
val cancellation = factory.staticMockk(it)

internalClearStaticMockk(it)
internalClearStaticMockk(arrayOf(it))
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems more efficient to call internalClearStaticMockk together as follows, but why not?
If there are no problems, I will reflect the changes.

classes.forEach {
    val cancellation = factory.constructorMockk(it, recordPrivateCalls, localToThread)

    MockKCancellationRegistry
        .subRegistry(MockKCancellationRegistry.Type.CONSTRUCTOR)
        .cancelPut(it, cancellation)
}

internalClearConstructorMockk(classes)

@@ -26,7 +26,7 @@ object MockKDsl {
inline fun <reified T : Any> internalMockk(
name: String? = null,
relaxed: Boolean = false,
vararg moreInterfaces: KClass<*>,
moreInterfaces: Array<out KClass<*>>,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was not sure whether to use List or Array, but I chose Array for the following reasons.

  • MockKGateway uses Array as an argument in the same situation.
  • It is more efficient not to convert to List.
  • It is an internal API, and it seems acceptable to sacrifice some readability.

@Raibaz
Copy link
Collaborator

Raibaz commented Sep 18, 2023

Looks good to me as it is. Thanks!

@Raibaz Raibaz merged commit f131526 into mockk:master Sep 18, 2023
26 checks passed
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.

Reduce the use of spread operator to improve performance.
2 participants