🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.advocacy
Article #480688

Re: robimy benchmark ;)

#480688
From: Piotr B.
Date: Thu, 18 Nov 2010 20:51
98 lines
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-mail
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>

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