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

Make using of the compiler single-thread #3151 #3202

Merged
merged 1 commit into from
Oct 24, 2023

Conversation

vmishenev
Copy link
Member

No description provided.

@vmishenev vmishenev force-pushed the 3151-make-using-of-the-compiler-single-thread branch from dc623e4 to 099f6c6 Compare October 11, 2023 17:18
Comment on lines +66 to 75
/**
* Implementation note: it runs in a separated single thread due to existing support of coroutines (see #2936)
*/
@OptIn(DelicateCoroutinesApi::class)
public fun createDocumentationModels(): List<DModule> = newSingleThreadContext("Generating documentable model").use { coroutineContext -> // see https://github.com/Kotlin/dokka/issues/3151
runBlocking(coroutineContext) {
context.configuration.sourceSets.parallelMap { sourceSet -> translateSources(sourceSet, context) }.flatten()
.also { modules -> if (modules.isEmpty()) exitGenerationGracefully("Nothing to document") }
}
}
Copy link
Member

Choose a reason for hiding this comment

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

There's a considerable chance it can lead to noticeably worse performance in projects with K1, and it might be especially evident with the CLI runner. Maybe you had time to do a few test runs to compare before and after?

It breaks the abstraction, but what do you think about using this single-threaded implementation for K2 only? Just to avoid raising too many questions for now with nothing to offer

Copy link
Member

Choose a reason for hiding this comment

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

Update on this question after some internal discussions:

Vadim did some benchmarking of the CLI runner to see if this has any impact on performance, and it looks like the documentable model takes 20% more time to be generated, but it's just a fraction of the overall time Dokka takes to generate documentation, so it's not really visible if you look at the whole run and not just an individual step.

Since we plan to get rid of coroutines either way, it's an acceptable solution for now.

@IgnatBeresnev IgnatBeresnev added this to the Dokka 1.9.20 milestone Oct 13, 2023
@IgnatBeresnev IgnatBeresnev linked an issue Oct 13, 2023 that may be closed by this pull request
@vmishenev vmishenev merged commit b281201 into master Oct 24, 2023
10 of 11 checks passed
@vmishenev vmishenev deleted the 3151-make-using-of-the-compiler-single-thread branch October 24, 2023 15:12
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.

Make using of the compiler single-thread
2 participants