Hlavní navigace

Názor ke zprávičce Kolem 70 % vážných bezpečnostních chyb v Chromiu jsou chyby používání paměti od Vít Šesták - Já uvidím budoucnost v používání více různých mechanismů...

  • Aktualita je stará, nové názory již nelze přidávat.
  • 26. 5. 2020 22:39

    Vít Šesták

    Já uvidím budoucnost v používání více různých mechanismů podle vhodnosti pro daný účel. Nějaké mixy AOT+JIT smysl dávají, ale ne vždy chceme JIT. Ta typicky znamená také zvýšenou paměťovou náročnost, protože musí být připravena na tzv. deoptimalizace ve chvíli, když zjistí, že neplatí nějaký předpoklad, na kterém staví spekulativní optimalizaci.

    Ukládat výsledek JITu zní smysluplně, ale taky to není tak jednoduché. Znamená to někam si ukládat stav. U aplikace sdílené mezi uživateli to může znamenat, že si každý uživatel bude ukládat stav do svého profilu, protože nebudeme chtít dát ostatním uživatelům možnost zapisovat do globálního stavu. Otázkou je taky více instancí jedné aplikace. A v neposlední řadě to může být trochu magie. Různé běhy stejného softwaru mohou mít různé požadavky a v principu to znamená, že rychlost běhu aplikace může být ovlivněná předchozím během – a to i negativně. To mohou způsobit různé deoptimalizace, které se v rámci jednoho běhu budou dít vzácně nebo vůbec, ale napříč běhy se dít mohou. Nevím, jestli z fleku vymyslím úplně realistický příklad, tak aspoň něco ilustračního:

    Mějme aplikaci, která pracuje s databází. Díky JDBC bude umět více různých databází. Já budu dlouho pracovat pouze s databázovým driverem X, takže JIT zjistí, že má jedinou implementaci různých JDBC tříd, a bude podle toho optimalizovat (inlinuje volání virtuálních metod apod.). Jednoho dne ale použiju na chvilku juinou databázi s driverem Y. JIT zjistí, že má najednou dvě implementace různých rozhraní k JDBC, tak veškeré optimalizace s tím spojené zahodí, a časem zkompiluje generičtější kód. Ten už nebude až tak rychlý, ale bude univerzálnější. Protože ale budu dál používat jen databázi s driverem X, znamenalo pro mě jedno spuštění s driverem Y trvalé zpomalení aplikace.

    Rozhodně tím nechci říkat, že JIT cache nemá budoucnost. Jen naznačuji, že situace není až tak jednoduchá a jednoznačná.

    ===
    Opět, je to jen můj názor, který se nemusí shodovat se stanoviskem mého zaměstnavatele…