SORU
19 Aralık 2014, Cuma


JavaScriptCore iç içe "çağrı" performans sorunu

Ben bir işlev tanımlayın

inc = function(x) { return x   1 }

ve iç içe geçmiş bir çağrı yapmak

inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(1)))))))))))))))))))))

bu 6* *değeri neden olur. Ben iç içe ifadesi yerine call, this, null geçen faydalanmak için gözden geçirin

inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, 1)))))))))))))))))))))

bu da 11 ** değer üretecek.

Ama, JavaScriptCore bu ikinci form tüketmek için görünürÇ(2^nbellek neredeniç içe geçmiş çağrıların sayısıdır. Bu JavaScriptCore için yalıtılmış gibi görünüyor bu yüzden Firefox veya Chrome bu JavaScript deneyin eğer durum böyle değil.

Çok az JavaScript deneyimi (neredeyse yok) var. Yok bir his bileşimleri çeşitli JavaScript uygulamaları yürütebilir, ne de olup makul için örnek kod için pahalı bazı uygulamaları (genel destek sağlamak için kapama ya da bunun gibi), verimli süre içinde Diğerleri.

Benim soru şudur: bu kod doğal olarak sorunlu mu? Farklı bir şekilde organize edilmesi yazılmış olmalıdır? Ya bu kod iyi—JavaScriptCore sadece bir hata var mı?

Geçici iç aramalar için birkaç yeniden düzenleme" hafıza davranış iki katına. "keser bazı deneyler yaptım

var temp1 = inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, 1)))))));

var temp2 = inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, temp1)))))));

inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, temp2)))))));

CEVAP
21 Aralık 2014, Pazar


Bu soru üzerinde yorum temelinde uzlaşma yazılı kod ile temel problem yok, ama onun yerine bu JavaScriptCore bir hata olduğunu.

ticket filed için tekrarlanabilir olarak onaylandı ve Apple'ın Radar sistemi içine alındı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Angry Paintballer

    Angry Paintb

    8 Ocak 2012
  • Artorius FullPower

    Artorius Ful

    29 Temmuz 2007
  • Major FX

    Major FX

    6 HAZİRAN 2012