Article View: pl.comp.os.advocacy
Article #480688Re: robimy benchmark ;)
From: Piotr B.
Date: Thu, 18 Nov 2010 20:51
Date: Thu, 18 Nov 2010 20:51
98 lines
5133 bytes
5133 bytes
Grzegorz Staniak explained on 11/18/2010 :
> On 18.11.2010, Piotr B <p_borkowski@nospamgazeta.pl> wroted:
>
>>>>> The result though is startling – Internet Explorer 9 took around
>>>>> 20 times longer with the two new tests compared with the original.
>>>>> While the original took only 1ms in my laptop, the other two took
>>>>> around 20ms each.
>>>>
>>>> Kolejny który nie słyszał o dead code elimination.
>>>
>>> Chyba sobie jaja robisz. _Dwudziestokrotna_ różnica czasu wykonania
>>> przez dodanie jednego właśnie nic nie robiącego "true" czy "return"?
>>> Wolne żarty.
>>
>> Dodanie return powoduje ten sam efekt co DCE[1]. Dodanie true, zmiana
>> operatorów lub pętli, które jeszcze nie są w DCE zaimplementowane powoduje
>> po prostu nie zadziałanie tej optymalizacji[2].
>
> Sorki, ale bzdurzysz. To byłaby optymalizacja, gdyby nie działała
> w tym jednym bardzo ograniczonym przypadku. Ten cały cheald sprawdził
> przecież analogiczne przypadki i ma rację pisząc:
>
> It would be good code analysis if it applied in the general case.
> That was my initial assumption too - that IE is doing the right
> thing - but the fact that it fails to apply this same analysis in
> other cases where the same conditions apply (no external scope
> modified, no returns, etc) makes it feel awfully suspiciously like
> it's cheating on the analysis of that function in particular.
>
> http://news.ycombinator.com/item?id=1915322
>
> Niestety, same twoje deklaracje to trochę za mało, żeby podważyć
> jego wnioski. Chcesz bronić honoru Microsoftu? Pokaż w jakich innych
> przypadkach działa ta sugerowana optymalizacja.
>
Ty czytałeś całą dyskusję? Masz tam przykłady modyfikacji kodu na których
działa DCE, a nawet przykład innej funkcji na której przy jednym zapisie
działa a przy innym nie.
http://news.ycombinator.com/item?id=1913497
http://news.ycombinator.com/item?id=1913527
http://news.ycombinator.com/item?id=1915380
Poza tym programiście Mozilli chyba wierzysz jak pisze że testowali:
Regarding fragility, our investigations have shown that you can only use
the operators -, +, ++, <<, +=, -=, and if(<). For example if you change
this comparison inside math-cordic:
if (TargetAngle > CurrAngle) { to
if (TargetAngle <= CurrAngle) { then IE9 will no longer eliminate the
code.
Więc akurat moje stwierdzenie okazuje się prawdziwe że po prostu DCE jest
jeszcze bardzo zabugowane i nie w pełni zaimplementowane. Co nie jest
dziwnym bo to jest beta 1.
>> Co do dwudziestokrotnej różnicy to jest ledwie 19ms (zmian z 1ms
>> na 20ms) więc tak się nie podniecaj. ;-)
>
> A jakież niby znaczenie ma sumaryczny czas? Istotna jest właśnie
> wielkość różnicy między przypadkiem z "pustym return", a przypadkiem
> "zoptymalizowanym" -- praktycznie nieistniejąca w innych implementacjach
> JavaScriptu.
Widocznie inne implementacje nie usuwają martwego kodu dlatego nie ma
różnicy. W przypadku IE9 bez return cała pętla for jest usunięta, zaś po
dodaniu return za pętlą for DCE nie działa. Po prostu bug w implementacji
DCE.
> Ty chcesz na poważnie dowodzić, że w przeciwieństwie do IE
> Chrome i Opera nie optymalizują kodu JS?
Jeden z linków który podawałem dowodzi tego że nie korzystają w tym
przypadku z DCE:
„In fact, if we just kill that for loop all together:
--- tests/sunspider-0.9.1/math-cordic.js 2010-11-17
00:55:29.000000000 -0700
+++ tests/sunspider-0.9.1-deadcode/math-cordic.js 2010-11-17
01:16:36.000000000 -0700
@@ -62,20 +62,6 @@
TargetAngle = FIXED(28.027);
CurrAngle = 0;
- for (Step = 0; Step < 12; Step++) {
- *snip for brevity*
- }
}
We get the following times:
Chrome: 8.9ms
IE: 10.6ms”
Po ręcznym usunięciu pętli czas się zrównuje i widać na którym kawałku kodu
DCE działa w której przeglądarce.
--
Piotr Borkowski
Technical Details
Message-ID:
<mn.951f7dab43de4c07.110465@pb2004.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.task.gda.pl!news.mm.pl!not-for-mailReferences:
<8kinliFfe5U1@mid.uni-berlin.de> <mn.93ec7dabc2333b33.110465@pb2004.pl> <ic3k3a$gi0$1@news.lublin.pl> <mn.948f7dab87d29d90.110465@pb2004.pl> <ic408g$1pf$1@mx1.internetia.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.task.gda.pl!news.mm.pl!not-for-mail
From: Piotr B. (pb2004) <p_borkowski@nospamgazeta.pl>
Newsgroups: pl.comp.os.advocacy
Subject: Re: robimy benchmark ;)
Date: Thu, 18 Nov 2010 21:51:19 +0100
Organization: Multimedia Polska SA
Lines: 100
Message-ID: <mn.951f7dab43de4c07.110465@pb2004.pl>
References: <8kinliFfe5U1@mid.uni-berlin.de> <mn.93ec7dabc2333b33.110465@pb2004.pl> <ic3k3a$gi0$1@news.lublin.pl> <mn.948f7dab87d29d90.110465@pb2004.pl> <ic408g$1pf$1@mx1.internetia.pl>
NNTP-Posting-Host: host-89-229-150-141.plock.mm.pl
Mime-Version: 1.0
X-Trace: news.mm.pl 1290114115 72958 89.229.150.141 (18 Nov 2010 21:01:55 GMT)
X-Complaints-To: abuse@multimedia.pl
NNTP-Posting-Date: Thu, 18 Nov 2010 21:01:55 +0000 (UTC)
X-Newsreader: MesNews/1.08.03.00-gb
X-Face: C\72mB@7o`]]`eB]Dc+=SP2P/`.zTC)&eI)d3eW`Fiunj2tV%U.P@QZ%{@(=d?f9`nfah^@ dZY)7[Lo!_',`tv'g|OV+E:I{j{;z%^{z3Q\7>XxBiZ~1NghO1Ss,FGI:J"]YQKn}cl>n?(<
User-Agent: Hamster-Pg/1.25.2.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit