On the algorithmic complexity of cooking
Epistemic status: just me thinking out loud in case I see something I could be doing better.
AI use: review, grammar and light phrasing fixes.
I like optimizing my life. I don't like chores. I like cooking, but not enough to intrinsically want to do it just for the sake of the process. I also happen to have studied algorithmic complexity, and I noticed that thinking about cooking in these terms is a useful framework.
This assumes that you are cooking to feed yourself reasonably tasty and nutritious food, but overall your approach to food is very utilitarian, e.g. you don't mind eating the same dish multiple days in a row. If you are after variety (e.g. a new dish every day), this method won't help you much.
We start with batch cooking. Cooking 7 servings of rice takes less time in total than cooking 1 serving 7 days in a row (my off-the-top-of-my-head guess is 30 min vs 3 hours). In the first case you measure the rice and water, rinse the rice (which makes your sieve dirty), wait until the water heats up, wait until the rice is cooked, and clean the pot. In the second case you have to redo this process 7 times with a smaller volume of rice. The smaller volume does not affect how long the majority of these steps take, but it still leaves your sieve and pot dirty, and it takes you approximately constant time to clean them. Moreover, you have to wait approximately the same time for the rice to cook, which makes 1 serving a day even less efficient.
Thus, the first principle of optimized cooking is to batch your cooking as much as you can. Having a freezer and lots of freezer-friendly containers greatly helps. In my experience freezing simple foods like rice does not affect their properties (but my bar is also not very high). So the only bottlenecks when scaling this process are the volume of the pots used for cooking, the volume of your freezer and the number of containers you have. In practice I cook at least 20 servings at once. Freezing them in portions also allows you to increase food variability, e.g. if after rice I cook another grain, then I can interleave meals based on that grain with rice-based meals and avoid the situation of having to eat rice for 2 weeks straight.
The case above illustrates the labor of actual cooking independently of what you are cooking. At the same time, there is variability based on what you are cooking. Compare potatoes vs rice. If you have to peel potatoes, then in order to produce n cooked potatoes you have to do O(n) work. I occasionally roast potatoes, which does not require peeling them, but you have to scrape them and cut off the bits of skin you don't want to consume, so it is still O(n), just with a smaller coefficient. In the case of rice, you just pour a bit more rice before cooking it, so technically it is still O(n), but the coefficient is so small that effectively it is O(1). Strictly speaking, big-O notation throws away exactly the constants that matter here, but this is a post about cooking, so the constants are not ignored.
However, the curve of cooking complexity is discontinuous (it has jumps). E.g. if you are cooking rice and you keep increasing the volume, eventually you will have to buy a bigger or a second pot, which you will then need to clean too, so by adding the last bit of rice you increased the work much more than by adding the previous bit. This happens with everything and at every stage. If you keep adding pots, you will run out of burners and will have to do multiple batches, so now the wall-clock time increases dramatically, since the cooking is not done in parallel anymore. Eventually you will run out of containers to freeze in, and then of freezer space.
Some of this work you can outsource with low effort (especially in the US). E.g. I don't like peeling carrots, which is O(n) and very messy, so I buy frozen pre-cut carrots and just cook them. You can even buy peeled garlic this way, which I am always tempted to do, but it feels too expensive, and every time I forget how cumbersome it was to peel it the last time, so I end up peeling my own garlic anyway. This is especially useful for salads in the US - many greens are sold pre-washed, so you can just portion them into your salad and be done (this has risks, e.g. lettuce leading to cyclosporiasis, which killed people).
It is also handy to have a modular approach to your food. E.g. divide each meal into components like carbs, proteins and vegetables. Then you can batch cook each component, and if you don't align their schedules, you get food variability. E.g. you can eat roasted potatoes with chicken drumsticks and, once the drumsticks run out, switch to fish fillets. By the way, roasted potatoes freeze very nicely and can be reheated directly from frozen in the oven. This takes more time than the microwave, but their texture is much better, and if you cover them with aluminum foil, they won't burn.
Conclusion
To cook efficiently, batch everything to save on setup and cleanup and to reduce context switching. Prefer foods that scale by volume (grains, frozen vegetables) over foods that scale by count (potatoes, carrots). Pick one constraint (stove, containers, freezer) and don't go past it, because beyond it each additional serving costs you more than the serving is worth.