Dizi.Vs Tampon kopyalayın.BlockCopy
Array.Copy Buffer.BlockCopy aynı şeyi hem de, ama BlockCopy
Copy
Genel amaçlı bir uygulama ise hızlı byte düzeyinde ilkel dizi kopyalama amaçlı. Benim sorum - hangi şartlar altında BlockCopy
kullanmalısınız. İlkel tür diziler kopyalarken, herhangi bir zamanda kullanmak gerekir, ya da sadece performans için kodlama konum kullanmalıyım? Array.Copy
Buffer.BlockCopy
kullanma hakkında bir şey doğası gereği tehlikeli mi var?
CEVAP
Başka bir örnek zaman mantıklı kullanın Buffer.BlockCopy()
zaman sensin sağlanan bir dizi ilkel (şort) ve dönüştürmek için bir bayt dizisi (say, iletim ağı). Silverlight AudioSink gelen ses ile uğraşırken bu yöntemi sık sık kullanıyorum. short[]
bir dizi olarak örnek sağlar, ama 10* *gönderdiğiniz paket kurarken byte[]
bir dizi dönüştürmek gerekir. BitConverter
kullanın ve dizi ile bire bir yineleme olabilir, ama çok daha hızlı (benim test hakkında 20x) sadece bunu yapmak için:
Buffer.BlockCopy(shortSamples, 0, packetBytes, 0, shortSamples.Length * sizeof(short)).
Ve aynı numarayı geri viteste de çalışır:
Buffer.BlockCopy(packetBytes, readPosition, shortSamples, 0, payloadLength);
Bu kasa C kadar yakın# C ve C . ortak olan bellek yönetimi (void *)
sıralama için
Dizi yerleştirme-yeni tampon belirtilm...
Javascript başka bir diziye dizi değer...
Eğer sayı on katı ise, ya da tespiti v...
Nasıl JNI bir dizi Java dönmek için?...
En iyi şekilde dize bir dizi rastgele ...