let src: &[u8] = &[1,2,3,4]; let mut dest: [u8; 4] = [0; 4]; dest.copy_from_slice(from); よりも let src = &[1,2,3,4]; let mut dest: [u8; 4] = src.try_into().unwrap(); のほうが数倍速いのは dest の初期化が要らないからかな?
-
-
[T; N] に対する TryFrom<&[T]> の実装を見る限りだとやってることは [T]::copy_from_slice と大差なさそうなので(Copyは多分memcpyになるはず)、元ツイートの通り初期化分だけ有利になっているとは言えそうですね。あとは一方の配列のサイズがコンパイル時に既知なので、その分最適化が効いている?
- 1 more reply
New conversation -
-
-
いえ,こちらこそ最初から手元のコードを出しとけという話ですみません… 直感的には copy_from_slice が memcpy 使って一番速いかなと思ったので意外でした
Thanks. Twitter will use this to make your timeline better. UndoUndo
-
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.