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

  • Bryan Adams

    Bryan Adams

    30 Mart 2006
  • cekehechu

    cekehechu

    20 HAZİRAN 2006
  • Dan Gately

    Dan Gately

    13 AĞUSTOS 2006