by shigemk2

当面は技術的なことしか書かない

不遇の標準ライブラリ #kbkz_tech

kbkz.connpass.com

@Ryosuke839

  • 画像認識とか機械学習の研究
  • C++初心者
  • 規格書暗記していない

f:id:shigemk2:20150517192229p:plain

valarray

  • 可変長配列を実現
  • vectorと被るんじゃね…
  • 使われていない… include数は…本当に少ない…

f:id:shigemk2:20150517192335p:plain

これを無理して使おう…

f:id:shigemk2:20150517192449p:plain

  • かなり無理して使っている。
  • res.resizeは可変長だけど可変長じゃない

f:id:shigemk2:20150517192600p:plain

  • ちゃんとunsignedにしないと演算子オーバーロードが解決しない
  • 内積とか外積とか出来るし、sin cos exp logなどの関数を使えるんだけど、他の型に変換することは出来なかったりする…

なぜこのライブラリが存在するのか

  • ベクトル化最適化が実装されていたFortranに対抗するために入れたのでは
  • 現在ではCPUでもSSEなどのベクトル命令が実装されてる

ベンチマーク

コードは適当な奴。iccでコンパイルするとvectorの数倍速い。

f:id:shigemk2:20150517192933p:plain

f:id:shigemk2:20150517192959p:plain

valarrayはユーザーの中ではなくライブラリの中で使われるもので、EigenとかOpenCVとか使ったほうがいいのでは?

標準委員会で推してた人がやめたのでvalarrayがなし崩し的に入れられた。 valarray単体では他にも使いやすいライブラリあるけど、 これを使っているライブラリがあったりするので簡単に消せない…