2010-05-10 9 views

Odpowiedz

33

Nicholas C. Zakas writes in his blog:

  • Internet Explorer 7: 1789
  • Firefox 3: 3000
  • Chrome 1: 21.837
  • Opera 9.62: 10000
  • Safari 3.2: 500

Istnieje więcej danych w różnych przeglądarkach i systemach operacyjnych here.

Utworzono test Browserscope, aby uzyskać więcej danych. Please run it here.

+1

Porzuciłem to razem po bardzo szybkim przeczytaniu artykułu: http://jsfiddle.net/TdWTs/ – endemic

+0

@endemic Dobra robota. Zrobiłem przeglądarkękopu dla tego problemu pod adresem http://adamrich.name/recursion.html. Jeśli uda nam się przekonać wiele osób do uruchomienia testu, możemy uzyskać aktualną tabelę limitów recusrion według przeglądarki i systemu operacyjnego. – Adam

+0

Moje umiejętności czytania ze zrozumieniem wymagają więcej pracy ... całkowicie pominięto część, w której wykonano już test w przeglądarce Browserscope. Uruchomiłem to w kilku przeglądarkach, co zaskakujące, że Chrome ma najniższy limit! No cóż, współpracownik martwił się o kilkaset rekursywnych iteracji (wat), a więc i moje zainteresowanie odkryciem prawdy. – endemic

10

Aby dodać do odpowiedzi tutaj, może to również zależeć od funkcji związanych z rekurencją. Na przykład, po prostu dodając kilka parametrów do funkcji może zmienić wynik:

var i=0; 
function inc() { 
    i++; 
    inc(); 
} 
inc(); 

daje mi 20923, ale

var i=0; 
function inc(j, k, l) { 
    i++; 
    inc(l, k, j); 
} 
inc(1, 2, 3); 

donosi 13949 (testowane w konsoli w Chromium 39). Firefox 34 daje odpowiednio 25085 i 13572.

Dodanie bloku try/catch wokół ciała zerowej argumentacji inc() daje 11413 klatek w Chromium i 13161 w Firefoksie. Zarówno 3 argumenty, jak i blok try/catch, 8967 w przeglądarce Chrome i 7517 w Firefoksie.

Moim dowodem jest to, że aplikacja działająca w pobliżu głębi stosu w przeglądarce może prawdopodobnie to wykombinować tylko na podstawie empirycznych pomiarów funkcji podobnych do używanych w aplikacji.

Powiązane problemy