BenHızlı yolu
var a = "hello";
a += " world";
Nispeten çok yavaş böyle bir şey yaptığını anlıyoruz. Yeni kütüphaneler kurmadan bunu yapmanın daha hızlı bir yolu var mı?
BenHızlı yolu
var a = "hello";
a += " world";
Nispeten çok yavaş böyle bir şey yaptığını anlıyoruz. Yeni kütüphaneler kurmadan bunu yapmanın daha hızlı bir yolu var mı?
Bu, dizeleri javascript'te birleştirmenin bilinen en hızlı yoludur.
fazla ayrıntı için, bkz:
Why is string concatenation faster than array join?
JavaScript: How to join/combine two arrays to concatenate into one array?
Testlerimde string dizisi nodejs v 0.12.2'de array.join'den 10 kat daha hızlıydı (ve util.format'tan 100 kat daha hızlı) http://edsykes.blogspot.de/2015/08/a-quick-comparison -of-speed-of.html –
Dizeleri birleştirmek için JavaScript'te başka hiçbir yol yoktur.
Sen teorik .concat()
kullanabilirsiniz, ama bu sadece +
Kütüphaneleri daha way slower özellikle de dize birleştirme veya sayısal operasyonları gibi temel operasyonlar, daha sık yerli JavaScript den değil daha yavaş bulunmaktadır.
Basitçe söylemek gerekirse: +
en hızlıdır.
soru zaten cevaplanır, ben ilk ben NodeJS Tampon düşünce gördüm ancak ne zaman. Fakat bu, + 'dan daha yavaştır, bu yüzden muhtemelen hiçbir şeyin dizgecik kipinde +' dan daha hızlı olamayacağı muhtemeldir.
aşağıdaki kodla test edilmiştir:
function a(){
var s = "hello";
var p = "world";
s = s + p;
return s;
}
function b(){
var s = new Buffer("hello");
var p = new Buffer("world");
s = Buffer.concat([s,p]);
return s;
}
var times = 100000;
var t1 = new Date();
for(var i = 0; i < times; i++){
a();
}
var t2 = new Date();
console.log("Normal took: " + (t2-t1) + " ms.");
for (var i = 0; i < times; i++){
b();
}
var t3 = new Date();
console.log("Buffer took: " + (t3-t2) + " ms.");
Çıktı:
Normal took: 4 ms.
Buffer took: 458 ms.
Bu arabellekle, bir dizeyi içeren bir sarıcıyı başlatıyorsunuz, daha sonra 2 sarmalayıcıdan bir dizi oluşturuyorsunuz, bu da dizi boyunca bitiştirme işlevi döngüsüne sahip oluyor. 'dizeleri birleştirmek için) ve döndürün. Sanırım bu arabelleğin neden yavaş olduğunu açıklıyor. – Cerbrus
Sen performansı hakkında sorular. 'Concat', '+' ve 'join' ile karşılaştırarak bu perf test'a bakın - kısaca + operatörü kazanır.
Bu doğru olsa bile (bu dizelerin birleştirilmesi çok yavaştır), kodunuz o kadar ağır bir şekilde bağlıdır ki bu da önemli bir yere sahiptir? – WTK