neprihlásený Piatok, 10. januára 2025, dnes má meniny Dáša
Nový IE 9 najrýchlejší v JavaScripte, objavilo sa podozrenie na podvádzanie

DSL.sk, 18.11.2010


Spoločnosť Microsoft v stredu sprístupnila siedmu testovaciu verziu jadra nového prehliadača Internet Explorer 9, IE 9 Platform Preview 7.

V novej verzii bol okrem iného optimalizovaný JavaScript engine, ktorý je podľa testov Microsoftu v benchmarku SunSpider už najrýchlejší z moderných prehliadačov vrátane Firefoxu 3.6, 4.0 beta, Opery 10.63, 11 Alfa, Chrome 7.0 a 8.0 Beta.

Zároveň ale v utorok Rob Sayre z Mozilly zverejnil bližšie informácie o zvláštnej optimalizácii nového JavaScript enginu v Internet Exploreri 9 prejavujúcej sa pri benchmarku SunSpider, ktorú by v prípade úmyslu a cielenia špecificky na tento benchmark bolo možné považovať aj za podvádzanie.

Sayre si už pôvodne v septembri pri IE 9 Platform Preview 3 všimol veľmi vysokú rýchlosť IE 9 pri teste math-cordic, ktorý IE 9 zvláda za 1 ms, kým konkurenčné prehliadače za rádovo 15 až 25 ms. Súčasná verzia IE 9 PP 7 dosahuje v testovacej konfigurácii použitej Microsoftom v benchmarku SunSpider celkový čas 216 ms, druhý Chrome 8.0 Beta 233 ms.

Sayre mierne modifikoval kód benchmarku napríklad pridaním príkazu "return;" na koniec funkcie realizujúcej test math-cordic, takže zmena nemala absolútne žiadny dopad na funkčnosť kódu. Takto zmenený kód benchmarku už ale IE 9 vykonáva približne rovnako rýchlo ako ostatné prehliadače.

Šéf vývoja Internet Explorer Hachamovitch v reakcii vysvetľuje, že IE 9 obsahuje optimalizáciu, ktorá detekuje mŕtvy kód a vôbec ho nevykonáva.

Za mŕtvy kód je považovaný aj kód meniaci iba premenné, ktorých hodnoty sa už nepoužijú a zabudnú a teda výpočet kódu bol zbytočný. Takýmto kódom je aj jediný hlavný cyklus vo funkcii math-cordic, ktorá počíta sínus a kosínus ale výsledok následne ďalej nepoužíva. Zo stanoviska Hachamovitcha tak vyplýva, že Internet Explorer 9 v skutočnosti vôbec kód funkcie math-cordic nevykonáva.

To by samo o sebe mohlo byť považované za elegantnú optimalizáciu a vyžadovalo by si to najmä úpravu benchmarku SunSpider, aby každý prehliadač musel testovaný kód skutočne vykonať.

IE 9 ale úplne presne rovnaký v tomto ponímaní mŕtvy kód nepreskakuje, keď je na konci procedúry až za týmto mŕtvym kódom príkaz "return;" žiadnym spôsobom nemeniaci daný mŕtvy kód.

Prečo sa tak deje Hachamovitch dôveryhodne nevysvetlil. Uvádza iba, že nový JavaScript engine v IE 9 si vyberá vhodnú rovnováhu medzi kvalitou a dĺžkou analýzy pre hľadanie takéhoto mŕtveho kódu a je v ňom priestor na zlepšovanie.


      Zdieľaj na Twitteri



Najnovšie články:

Prehrávač videa VLC podporuje generovanie titulkov pomocou AI
Uvedený Raspberry Pi 5 s až 16 GB RAM
Japonci vypustili do vesmíru prvý satelit z dreva
Štát potvrdil rozsiahly útok na kataster, zostáva nefunkčný
DisplayPort bude mať novú verziu, umožní monitor pripojiť oveľa dlhším káblom
Priestupný rok 2024 spôsobil na konci roka vážny problém satelitom
Uvedený nový Snapdragon X pre lacnejšie PC a prvé mini desktopy s týmito CPU
Kataster vôbec nefunguje ani dnes, úrad príčiny stále nevysvetlil
Lenovo uviedlo notebook s rozťahovacím displejom, kompaktný ale drahý. Video
Kataster nehnuteľností nefunguje cez Internet ani fyzicky, údajne bol terčom útoku


Diskusia:
                               
 

nechcem to hovorit ale podla mna IE nepodvadza... je to naozaj sikovna optimalizacia zo strany vyvojarov
Odpovedať Známka: 2.3 Hodnotiť:
 

Tiez si myslim. Pokial funkcia nema return a nemodifikuje navonok ziadne dalsie objekty, tak ju ta optimalizacia vyhodi. Kdezto ked tam ten return je, tak to uz musi zohladnovat dalsie zavislosti a to uz moze byt casovo narocne.
Odpovedať Známka: 3.1 Hodnotiť:
 

No co ja viem. Keby to bolo take jednoduche, tak uz je to davno vo vsetkych prehliadacoch. To za prve. Za druhe, samotny prazdny return predsa nevytvara ziadne zavislosti, tak co zohladnovat? Je to somarina. A za tretie v tych celkovych vysledkoch mali naskok len nejakych 15ms, co bolo menej, ako cca usetrili na tom "mrtvom" kode. Neviem neviem, nepaci sa mi to.
Odpovedať Známka: 3.6 Hodnotiť:
 

Jedine ze by podvadzali aj v inych testoch. Dovodne podozrenie tu je.
Odpovedať Známka: 6.0 Hodnotiť:
 

Tá optimalizácia sa nepoužije ani vtedy, keď sa pred ten cyklus dá true; (nijako to nasledujúci cyklus neovplyvňuje, takže ak tá optimalizácia naozaj funguje aj inde, ako pri tom jednom teste, malo by to samotný cyklus preskočiť aj tak, pretože sa výsledok taktiež nikde nepoužije).
Odpovedať Známka: 5.6 Hodnotiť:
 

za IE8 stoji s prepacenim za hovno, absolutne najpomalejsi prehliadac a zrazu pri dalsej verzii su najrychlejsi v porovnani s konkurenciou, ktoru sa snazia marne dobehnut ci uz po stranke kvality bezpecnosti atd, mno podla mna minimalne divne
Odpovedať Známka: 3.3 Hodnotiť:
 

thank you, captain obvious!

tato sprava je o IE9.
Odpovedať Známka: -7.5 Hodnotiť:
 

Vsak on aj pise o IE9...porovnava ho s java script engine IE8
Odpovedať Známka: 8.5 Hodnotiť:
 

A ako si prišiel na to, že IE8 je najpomalší prehliadač???
Odpovedať Známka: -7.8 Hodnotiť:
 

Hmm. mne IE8 otvori dsl.sk za 1s, google.com tiez, sme.sk 1-2s. Tvoj prehliadac to urobi za 0.1s?
Odpovedať Známka: -9.0 Hodnotiť:
 

najdi si na tomshardware test prehliadacov, su tam 2 nasledne testy, IE8 skoncilo jednoznacne posledne, v rychlosti kompatibilite vsade
Odpovedať Známka: 7.6 Hodnotiť:
 

mozem ti najst stranocku, na ktoru mozes ist s IE8, a s inym prehliadacom. Po navsteve s inym prehliadacom nebudes musiet reinstalovat win. :)))
Odpovedať Známka: 4.5 Hodnotiť:
 

Mne a aj dalsich 90-95% pouzivatelov, co denne pozru par stranok uplne staci IE8. A benchmarky ... tak si idem rychlo kupit najnovsiu NVIDIU kartu lebo ta je najrychlejsia, ale ved ja ani nehram hry, nevadi ved ta je najrychlejsia :-)) LOL
Odpovedať Známka: -3.3 Hodnotiť:
 

To je presne to... Ked raz pride cas (a ten pride) a bude sa ti zdat ze tvoj PC je na teba pomaly, pravdepodobne siahnes na novy HW... A niekto iny, kto bude sledovat tie zbytocne benchmarky, moze zelezo obnovit neskor.... ;) (tym nenarazam len na prehliadace)

... To ze dnes je jeden v nejakom teste o 15 ms rychlejsi ako druhy ti isto pride velmi zbytocne, ale z dlhodobeho hladiska sa tym ze sa snazi byt vzdy nejaky z nich o nieco rychlejsi dosiahne vela....

Ale tak ked ti staci IE8, kludne ho pouzivaj este par rokov, len si potom pls davaj pozor, o com sa vyjadrujes... ;)

a na zaver.... Keby to IE aspon funkcionalitou predbehlo konkurenciu... Keby lepsie dodrziavalo standardy.... ale ani to nie... tak potom PRECO ho pouzivat?
Odpovedať Známka: 3.3 Hodnotiť:
 

Lenže rozdiel medzi IE8 a IE9 je dva roky, ak nie viac. Porovnaj si Firefox 4 s verziou spred dvoch rokov a ten rozdiel nebude iný ako pri IE.
Inak, ak hovoríš o bezpečnosti, v testoch Secunia IE8 od vydania až doteraz vedie v ochrane proti sociálne orientovanému malware.
Odpovedať Známka: 7.5 Hodnotiť:
 

no ved prave ze treba porovnat ako casto vychadza IE a ako casto vychadza konkurencia, co cakaju ze kedy dotiahnu konkurenciu? zeby nikdy?
Odpovedať Známka: -7.1 Hodnotiť:
 

Ale o tom diskusia vôbec nebola. Bavili sme sa o tom, že niekto spochybňuje výsledky IE9 kvôli tomu, že taký skok oproti predošlej verzii je málo pravdepodobný. Či je takáto frekvencia vydávania nových verzií dobrá alebo zlá, je druhá vec.
Nepochybujem o tom, že IE9 bude veľmi dobrý a rýchly prehliadač, aj keď odstraňovanie mŕtveho kódu je jedna z vecí, ktoré síce pomôžu IE9 v Sunspideri, ale na bežných weboch je to úplne zbytočné. Opäť raz nezmyselná implementácia čohosi len kvôli výsledkom v testoch :-|
Odpovedať Známka: 2.0 Hodnotiť:
 

a hlavne ok mozno este zvysia trochu vykon kym vydaju final verziu ale ta bude potom rovnako rychla az do IE10 (a za ten cas sa s prehladom posunie opat na posledne miesto ;) )
Odpovedať Známka: 10.0 Hodnotiť:
 

Ten test má testovať všetko, čo v tej funkcii je, a nie len časť (predpokladám, že ten test čoskoro opravia).

Ak chcú testovať, ako si ich JS poradí s mŕtvym kódom, tak môžu urobiť vlastné testy, ktoré budú kontrolovať aj to, či sa náhodou nepreskočí viac kódu, ako je vhodné (a teda výsledkom tej optimalizácie bude nefunkčný kód).
Odpovedať Známka: -2.0 Hodnotiť:
 

Nepodvadzaju v pravom slova zmysle, ale povazovat takyto test za relevantny by nebolo spravne. Zaujimave je ale to, ze podobny figel nenapadol nikoho ineho predtym, pretoze potencialne zrychlenie tu urcite je.
Odpovedať Známka: 10.0 Hodnotiť:
 

vacsine inych prehliadacov vidis pod kapotu. niekto by si to vsimol.
Odpovedať Známka: 2.0 Hodnotiť:
 

tu si to nikto nevšimol či čo?
Odpovedať Hodnotiť:
 

Nuz co panko s Mozily zasa ziaely na IE ze je lepsi. IE ma od vydania (neviem presne kedy visla 5-ja) len 9 verziy a Firefox je len decko v plienkach ktore ked bude tolko rokou na scene ako IE tak bude mat iznacenie Firefox 100 alebo aj viac!! To hovory za seba.....
Odpovedať Známka: -7.8 Hodnotiť:
 

a teraz tú o červenej čiapočke :oD
Odpovedať Známka: 5.2 Hodnotiť:
 

http://www.youtube.com/watch?v=A3TH_q7CiiY
Odpovedať Známka: 2.5 Hodnotiť:
 

Ešte aj ten bicykel bude opitý, aj s rýlom :-)
Odpovedať Hodnotiť:
 

zavidia, ze na to neprisli prvi.
Odpovedať Známka: 0.7 Hodnotiť:
 

Na čo neprišli prví? Na elimináciu mŕtveho kódu (také niečo sa používa už strašne dlho), alebo na optimalizovanie JS jadra presne na konkrétny test (a áno, aj to sa robí už dosť dlho).
Odpovedať Známka: 2.9 Hodnotiť:
 

Ej, páni, asi ma chce niekto riadne nasrať http://bit.ly/9TYHpA
Odpovedať Známka: -7.8 Hodnotiť:
 

Ako to súvisí s IE a tým testom?
Odpovedať Známka: 10.0 Hodnotiť:
 

tak ma to nasralo, že by som to napísal aj sem http://www.kredo.sk/bforum/
Odpovedať Hodnotiť:
 

rychlost preskakovania kodu je aj v inych takmer rovnako rychle. ak ho nevykona ale preskoci, tak sa nemoze zucastnovat toho testu. uz sa tesim ako budeme optimalizovat JS kod "aj" pre IE9....
Odpovedať Známka: 6.0 Hodnotiť:
 

Takuto optimalizaciu pouziva uz roky prakticky kazdy C kompilator. Typicky priklad je:
void Delay()
{
For (ix=0; ix<30000; ix++);
}
sa po kompilacii javi ako jedna instrukcia
return;
------------------
Toto ale nie je optimalizacia, to je nefunkcny podvod.
Zvlast ak sa to pouziva na meranie casu...
Odpovedať Známka: -1.7 Hodnotiť:
 

to je co za blbost? Skusal si to aj s vacsimi cislami ako je 30000 alebo si to snad videl v disassembleri? Lebo gcc vo verzii 4.3.4 to ani nenapadne a kod tam necha, presne tak ako aj kompilator MS Visual Studia 2010.
Odpovedať Známka: 2.5 Hodnotiť:
 

pardon, vizualko to v release builde odstrani, ale gcc aj s zapnutymi optimalizaciami to tam necha
Odpovedať Známka: 0.0 Hodnotiť:
 

Aj si to skúšal, alebo si to len myslíš? Pri optimalizácii O2 gcc nie len že vynechá ten cyklus, ale dokonca ani nebude volať tú funkciu, pretože sa v nej, po vynechaní toho cyklu, nič nerobí.

PS: Samotná funkcia tam ostane len preto, lebo by ju mohol používať nejaký externý program (ak by sa ten program použil ako "knižnica"). Ak by tá funkcia bola statická, a teda viditeľná len z toho jediného súboru, tak by sa odstránila aj samotná prázdna funkcia.

PPS: Ak to chceš vyskúšať, použi niečo ako gcc -O2 -S test.c -o test.s a porovnaj výsledné súbory.
Odpovedať Známka: 10.0 Hodnotiť:
 

jup, mas pravdu. skusal som to, ale poplietol som -O2 z -o2 :D
prepac :D
Odpovedať Hodnotiť:
 

*s
//a bolo mi blbe opravovat svoju vlastnu opravu :D
Odpovedať Hodnotiť:
 

Ten priklad je trochu odveci kedze neuvadzas deklaraciu ix. Ak ix deklarujes ako volatile tak to prekladac nevyhodi.
Odpovedať Známka: 10.0 Hodnotiť:
 

Prečo musím žiť v tejto republike?
Odpovedať Známka: -10.0 Hodnotiť:
 

Ak naozaj musíš, tak si asi zbavený svojprávnosti...?
Odpovedať Známka: 5.0 Hodnotiť:
 

Bych udělal testy na DNA a pokud by se prokázalo, že nešlo o ženu.... tak si myslím, že Microsoft vytáhne žolíka v podobě Steve Ballmera, který vymyslí pohotově trapný keynote, všichni se zasmějí a bude se povídat:

"Ti chlapci z Microsoftu jsou vlastně takové veselé kopy, nemůžeme na ně svalovat, že Cori Hartje není ve skutečnosti žena, kontrola pravosti není vždy neomylná ....Microsooooooft" :-D
Odpovedať Známka: 0.0 Hodnotiť:
 

Mozna to robi ozaj ako kompilator, spravi 2 prechody, najprv sa poobzera po premennych, snazi sa im priradovad hodnoty a zaroven sa pozrie, ci si pouzite (typicky assembleracky prekladac).

Co sa mi ale nevidi je ten return; , to je proste len exit funkcie co nic nevracia, Ceckovy prekladac by stale hlasil nepouzitu premennu (inak by tam bolo nieco typu return premenna;). Ale len tipujem, do JS sa rozumiem ako mojaj mama do C#. :)
Odpovedať Hodnotiť:
 

no prave to!

to, ze MS dal do svojho JS detekciu mrtveho kodu je ok, ze odchytia blbo napisane programy od pojedacov kolacov. A je to chyba toho testu, ze to neosetrili aby sa netvaril ako mrtvy.

najvacsia sranda je ale to, ze ta superoptimalizacia od frajerov koderov z MS konci presne tam, kde ten konci test :) keby to spravili poriadne, akoze fakt ze optimalicia, tak by ani ten return nemal byt problem...

funny MS
Odpovedať Hodnotiť:
 

Však to ešte nie je finálna verzia. "We continue to tune this for IE9".
Odpovedať Hodnotiť:

Pridať komentár