アセンブラ(インライン)を用いた高速化ですが、
あくまで個人的に、以下の条件を満たす事が必要です。
1.Cコンパイラより、優秀なコードが書ける事
専用ハード等の場合、コンパイルオプションが固定な場合、ある程度効果が期待できま す。
最近のコンパイラでは、あまり期待しない方が良いと思っています。
というより、苦労に見合わない感じがします。
2.SSEを使う場合、精度の問題がクリアできている事
浮動小数点演算について、今時のPCでは、floatでも内部的には80bitの浮動小数点演算だそうで、結局64/32bitの並列処理にしても、演算精度の問題が出てきます。クリアできる場合、効果が期待できるので、Goですね。
結局、
アセンブラを用いた高速化が検討できるだけ、良い職場という事です。
少なくとも、良いソフトにしようという意思がある。という事。
ほとんどの職場では、それ以前の問題で、「そもそも動いていない」とかです。
自身、アセンブラは楽しくて好きなのですが、動いている物が来ない事が多いので、
適当に整数演算化し、スレッド切って、終了です。
なので、ここ数年、 書いていないし、見かけません。
感覚的に、効果はさほど変わらないので、良しとし、勝手に納得しているのです。
では。
あくまで個人的に、以下の条件を満たす事が必要です。
1.Cコンパイラより、優秀なコードが書ける事
専用ハード等の場合、コンパイルオプションが固定な場合、ある程度効果が期待できま す。
最近のコンパイラでは、あまり期待しない方が良いと思っています。
というより、苦労に見合わない感じがします。
2.SSEを使う場合、精度の問題がクリアできている事
浮動小数点演算について、今時のPCでは、floatでも内部的には80bitの浮動小数点演算だそうで、結局64/32bitの並列処理にしても、演算精度の問題が出てきます。クリアできる場合、効果が期待できるので、Goですね。
結局、
アセンブラを用いた高速化が検討できるだけ、良い職場という事です。
少なくとも、良いソフトにしようという意思がある。という事。
ほとんどの職場では、それ以前の問題で、「そもそも動いていない」とかです。
自身、アセンブラは楽しくて好きなのですが、動いている物が来ない事が多いので、
適当に整数演算化し、スレッド切って、終了です。
なので、ここ数年、 書いていないし、見かけません。
感覚的に、効果はさほど変わらないので、良しとし、勝手に納得しているのです。
では。