Názor ke článku Optimalizace async. parseru JSON v C++20 od Ondřej Novák - Jj, děkuji za poznámku , já v zásadě...

  • 9. 5. 2024 8:34

    Ondřej Novák

    Jj, děkuji za poznámku , já v zásadě o tom vím , jen to nemám pořádně nastudované a testované.

    Tady by se hodil assume na _fetched false, protože překladač při optimalizaci co_await neví nic o tom jestli se ten příznak nenastavuje někdy jindy. Z funkce await_ready vedou tři cesty, z nichž jedna končí false a další dvě končí true, s nichž jedna má ten příznak _fetched nastaven na true a druhá na false. Teda takový je záměr ale překladač nemá jak ověřit ten poslední případ. Proto generuje rychlejší kód pokud je příznak explicitně vynulován, protože může přeskočit i ten test na _fetched v await_resume a ten return inlinuje do té přímé větve a vysledkem je pak jednoduchý cyklus s jednim testem - pokud je co_await v cyklu

    Zkusím v další seanci tam dat c++23 a ověřit jak se to bude chovat s assume