回答編集履歴
2
説明を少し追加しました
answer
CHANGED
@@ -7,9 +7,9 @@
|
|
7
7
|
|
8
8
|
> 実際に遅いのか、遅いならばどんな別の手段を用いればいいのか、なにか分かる方は回答の方を宜しくお願いします。
|
9
9
|
|
10
|
-
sliceの作成はファットポインタ(fat pointer)と呼ばれる軽量なデータ構造を作るだけですので、非常に軽い処理になります。ファットポインタの内容は、1) データの先頭アドレスを指すポインタ(64ビット環境なら8バイト)と、2) データの長さ(要素数)を示す`usize`値 だけです。
|
10
|
+
sliceの作成はファットポインタ(fat pointer)と呼ばれる軽量なデータ構造を作るだけですので、非常に軽い処理になります。ファットポインタの内容は、1) データの先頭アドレスを指すポインタ(64ビット環境なら8バイト)と、2) データの長さ(要素数)を示す`usize`値 だけです。ですから遅いことはまず考えられません。
|
11
11
|
|
12
|
-
正しく計測するのは結構大変なので、そのような作業はお勧めしません。私がやるときはコンパイル後のアセンブリコードが期待通りになるまでRustコードを修正しながら試行錯誤する感じです。コマンドラインからの入力を元に配列を作成して、その配列を使った計算結果を出力するようにすると大体うまくいきます。([参考](https://qiita.com/tatsuya6502/items/7ffc623fc60be0220409#寄り道コンパイラの最適化による-simd-化を体験))
|
12
|
+
そのことをベンチマークで正しく計測するのは結構大変なので、そのような作業はお勧めしません。私がやるときはコンパイル後のアセンブリコードが期待通りになるまでRustコードを修正しながら試行錯誤する感じです。コマンドラインからの入力を元に配列を作成して、その配列を使った計算結果を出力するようにすると大体うまくいきます。([参考](https://qiita.com/tatsuya6502/items/7ffc623fc60be0220409#寄り道コンパイラの最適化による-simd-化を体験))
|
13
13
|
|
14
14
|
あと、余談ですが上のCompiler Explorerのリンク先のページですが、コードの保存期限とかがあって見られなくなるかもしれません(いままでこのサイトでコードを共有したことがないので、よくわかってません) 一応、使い方を説明しておきます。
|
15
15
|
|
1
軽微な修正
answer
CHANGED
@@ -9,9 +9,9 @@
|
|
9
9
|
|
10
10
|
sliceの作成はファットポインタ(fat pointer)と呼ばれる軽量なデータ構造を作るだけですので、非常に軽い処理になります。ファットポインタの内容は、1) データの先頭アドレスを指すポインタ(64ビット環境なら8バイト)と、2) データの長さ(要素数)を示す`usize`値 だけです。
|
11
11
|
|
12
|
-
正しく計測するのは結構大変なので、そのような作業はお勧めしません。私がやるときはコンパイル後のアセンブリコードが期待通りになるまでRustコードを修正しながら試行錯誤する感じです。コマンドラインからの入力を元に配列を作成して、その配列を使った計算結果を出力するようにすると
|
12
|
+
正しく計測するのは結構大変なので、そのような作業はお勧めしません。私がやるときはコンパイル後のアセンブリコードが期待通りになるまでRustコードを修正しながら試行錯誤する感じです。コマンドラインからの入力を元に配列を作成して、その配列を使った計算結果を出力するようにすると大体うまくいきます。([参考](https://qiita.com/tatsuya6502/items/7ffc623fc60be0220409#寄り道コンパイラの最適化による-simd-化を体験))
|
13
13
|
|
14
|
-
あと、余談ですが上のCompiler Explorerのページですが、コードの保存期限とかがあって見られなくなるかもしれません(いままでこのサイトでコードを共有したことがないので、よくわかってません) 一応、使い方を説明しておきます。
|
14
|
+
あと、余談ですが上のCompiler Explorerのリンク先のページですが、コードの保存期限とかがあって見られなくなるかもしれません(いままでこのサイトでコードを共有したことがないので、よくわかってません) 一応、使い方を説明しておきます。
|
15
15
|
|
16
16
|
- Editorのフレーム内の設定をRustに切り替えて、以下のコードをコピー&ペーストする
|
17
17
|
+ 関数に`pub`をつけないと結果が表示されないので注意
|