I’m not trying to be a jerk.

I’m really not.

And coroutines are great.

And I am sure you are a nice guy. I really enjoyed the first half of the article!

But you really think this is an accurate, professional benchmark?

Benchmarking is hard. Benchmarking on a VM like the JVM or Dalvik VM is very hard.

I repeat, it is very hard.

see: http://www.oracle.com/technetwork/articles/java/architect-benchmarking-2266277.html

and specific to the kind of benchmark you are trying to perform:

https://stackoverflow.com/questions/2842695/what-is-microbenchmarking

You arent using JMH or any real benchmarking tooling.

You are not properly isolating your tests.

You are doing these inside a running app.

You are measuring via the Android Studio profiler.

Different versions of the Android runtime java have vastly different GC and allocation mechanisms.

You are not asking anyone with domain expertise to write your library code.

You aren’t running these tests on a deterministic way but instead tapping on the ui on a given device with who knows what running or how old the battery is, etc.

You didnt provide multiple cases but instead a single example (not even remotely close to a good spectrum of real world use cases).

There are certain things that require a ton of specialized expertise in software. Unfortunately, benchmarking (especially micro-benchmarking like this) is one of them.

Again, not trying to be a downer, but you are vastly out of your league here. (as I would be as well if I didnt at least spend 6 months focused on benchmarking from a mentor who is a JVM and Dalvik VM expert, not to mention an expert on each library and paradigm and even then my benchmark would probobly not that great).

I would recommend keeping your coroutine opinion writing (which I really enjoyed) and absolutely toss the attempted benchmarking.

It’s incredibly naive or lazy at best, misleading or dishonest at worst.