JetStream 3, et verktøysett for ytelsestesting av nettlesere, er publisert. Det tester ytelsen til JavaScript- og WebAssembly-motorer når de kjører typiske beregningsintensive webapplikasjoner. For å oppnå objektive og uavhengige resultater utvikles prosjektet i fellesskap av utviklere av konkurrerende nettlesermotorer fra Google, Apple og Mozilla. Koden er tilgjengelig under en BSD-lisens.
Den nye versjonen tar hensyn til moderne trender og endringer som har skjedd på nettet siden lanseringen av JetStream 2 i 2019, og oppdaterer også tester for å matche driftsmønstrene til ekte webapplikasjoner og gjenspeile reell ytelse, snarere enn syntetiske resultater som nettlesermotorer er spesifikt optimalisert for.
I motsetning til Speedometer 3-referanseindeksen fokuserer JetStream 3 på å måle beregningsevner snarere enn grensesnittgjengivelse og DOM-manipulasjonshastigheter. JetStream 3 gjenspeiler bedre ytelsen til nettleserspill, fysikksimulatorer, kjernefunksjonalitet i rammeverket, kryptografiske verktøy og komplekse algoritmer.
Testfunksjonene for WebAssembly (Wasm) er betydelig utvidet, inkludert evaluering av avanserte WebAssembly-funksjoner som unntakshåndtering, bruk av vektor-SIMD-instruksjoner og WasmGC-utvidelsen for å kjøre prosjekter i søppelsamlede språk. Ytelsestester er lagt til for WebAssembly-applikasjoner bygget med verktøysettene J2CL, Dart2wasm, Kotlin/Wasm, Rust og .NET, og generert fra Java-, Dart-, Kotlin-, Rust- og C#-kode.
Nye arbeidsbelastninger som brukes i WebAssembly-testing inkluderer beregning av argon2-hasher, kjøring av en maskinlæringsmodell ved hjelp av SIMD-instruksjoner for optimalisering, generering av brukergrensesnitt i Dart og Kotlin, kjøring av SQLite3 og kjøring av tolken og runtime .NET kompilert i WebAssembly.
La til 15 nye JavaScript-tester, inkludert Babylon.js 3D-motor, ed25519 elliptiske kurveoperasjoner, MobX-biblioteket, syntaksutheving med prismjs, flere proxy-implementeringer, strålesporing, filsystemoperasjoner, Three.js 3D-partikkelatferdssimulator, Typescript 5.9-kompilering, strengvalidering med validator.js og sidegenerering med React.
For å forhindre at CPU-frekvens og I/O-belastninger påvirker resultatene mellom tester, forhåndslaster JetStream alle ressurser før tester kjøres i nettleseren. For å redusere maksimalt minneforbruk og sikre mellomlagring lagres ressursene som URL-kodede blobs. JetStream kan brukes til å teste ikke bare nettlesere, men også frittstående motorer, for eksempel d8.
Kilde: opennet.ru
