Skip to content

Conversation

@ccotter
Copy link

@ccotter ccotter commented Jan 6, 2025

The benchmark hangs when run with 1 million tasks. I haven't looked into it, but perhaps there is an inefficient implementation of the timer in unifex.

As a POC, I reimplemented the unifex benchmark to spawn N tasks and have them wait until all N are created before completing the program. I did not change the other benchmarks.

The benchmark hangs when run with 1 million tasks. I haven't looked into it, but perhaps there is an inefficient implementation of the timer in unifex.

As a POC, I reimplemented the unifex benchmark to spawn N tasks and have them wait until all N are created before completing the program. I did not change the other benchmarks.
@ccotter
Copy link
Author

ccotter commented Jan 6, 2025

Ah ok, as noted in the linked issue, libunifex uses a sorted linked list internal to the timer scheduler, and it hits a worse case when each list enqueue must traverse each element in the list...

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.

1 participant