- 1 名前:デフォルトの名無しさん(ワッチョイ dfcf-HvS5) mailto:sage [2017/01/09(月) 14:49:27.56 ID:p96WJVyd0.net]
- 次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512 C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part128 echo.2ch.net/test/read.cgi/tech/1480172629/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.100【環境依存OK】 echo.2ch.net/test/read.cgi/tech/1478440682/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語) VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
- 800 名前:デフォルトの名無しさん (ワッチョイ 336e-8FG5) mailto:sage [2017/03/21(火) 12:20:28.06 ID:ovrpZx5v0.net]
- 全く理解してないし、今日初めて知ったんだけど
遅延評価といっても所詮静的なものだから こんなものはコンパイラが最適化を超がんばれ、って思う たぶん事の本質は演算の順番を変えることで (縦に計算するか、横に計算するか、みたいな?) 最適化がかかりやすくなったり速く動いたりできるかもね って事なんじゃないかと俺は勝手に思った ただ愚直に演算の順番を変えると記述性に問題が出てくるから それを防ぐテクニックなのかなーと よくわからないけど
- 801 名前:デフォルトの名無しさん (ワッチョイ 534f-v8EU) mailto:sage [2017/03/21(火) 12:35:09.71 ID:bH1u/9cj0.net]
- Expression templateの一時変数問題は
ムーブコンストラクターで解決された問題だよね。
- 802 名前:デフォルトの名無しさん (ワッチョイ 737a-12+v) mailto:sage [2017/03/21(火) 12:36:27.24 ID:/NjqKBkb0.net]
- プログラムが扱いやすいように初期値を設定してやるのは人間の仕事
- 803 名前:デフォルトの名無しさん (ワッチョイ 336e-8FG5) mailto:sage [2017/03/21(火) 12:54:01.22 ID:ovrpZx5v0.net]
- 全く理解していない俺が言うのもなんだけど
ムーブコンストラクタは関係ないと思う 演算順序を変えないことには何処かに一時的に計算結果を保存しておかないと ダメなことには変わりないのでは? tmp[0] = a[0] + b[0]; tmp[1] = a[1] + b[1]; r[0] = tmp[0] + c[0]; r[1] = tmp[1] + c[1]; と r[0] = a[0] + b[0] + c[0]; r[1] = a[1] + b[1] + c[1]; の違いじゃないかなー これで配列のサイズが1000とかだったらかなり差が出るんだろう ただ、普通にforループ書けば?って気もするが そこを演算子のオーバーロードでどうしても記述したいってのが 例の技術なのかと 俺には必要ないかなー 要素数の少ないベクトルはSIMD使うし、要素数の多い配列はループ回すし
- 804 名前:デフォルトの名無しさん (ワッチョイ 534f-v8EU) mailto:sage [2017/03/21(火) 13:04:15.57 ID:bH1u/9cj0.net]
- a[0] += b[0];
a[0] += b[1]; c[0] += a[0]; c[1] += a[1]; r[0]=c[0] r[1]=c[1] ムーブコンストラクターを使うとこうなる
|

|