ERI Developer's BBS
  新規投稿 ┃ ツリー表示 ┃ 一覧表示 ┃ トピック表示 ┃ 検索 ┃ 設定 ┃ ホーム  
32 / 57 ツリー ←次へ | 前へ→

MMX,SSE,SSE2すげー KAZ 02/6/17(月) 11:59
┗ Re:MMX,SSE,SSE2すげー L.Entis 02/6/18(火) 21:28
 ┗ Re:MMX,SSE,SSE2すげー KAZ 02/6/18(火) 22:44

MMX,SSE,SSE2すげー
 KAZ  - 02/6/17(月) 11:59 -

引用なし
パスワード
   頻度表更新のためにMMXに単純に置き換えても15秒の処理が12秒にスピードアップしました。
自分なりに慎重に最適化した結果10秒になりました。
まだアセンブラよくわからず、とりあえず動くだけのとこも多いです。
INC [EAX]はバイト単位でインクリメントしてしまいます。
MOV EBX,[EAX]
INC EBX
MOV [EAX],EBX
としないと32ビット単位でインクリメントしてくれないとか…

SSEは3Dなどでの実数演算。
SSE2はMMX,SSE2のパワーアップ版と聞いていますが詳細はまだ知りません。
でも整数演算がMMXの2倍の量で出来るらしいので調べてみます。
<Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)@U105104.ppp.dion.ne.jp>

Re:MMX,SSE,SSE2すげー
 L.Entis  - 02/6/18(火) 21:28 -

引用なし
パスワード
   ▼KAZさん:
>まだアセンブラよくわからず、とりあえず動くだけのとこも多いです。
>INC [EAX]はバイト単位でインクリメントしてしまいます。
>MOV EBX,[EAX]
>INC EBX
>MOV [EAX],EBX
>としないと32ビット単位でインクリメントしてくれないとか…

x86の初歩ですね(^^;
inc DWORD PTR [eax]
としましょう。
ただ、メモリに対する操作は、
add eax, mem
mov mem, eax
のような形が基本です。
<Mozilla/4.75 [ja] (Windows NT 5.0; U)@tokyo-fa1-147.kcom.ne.jp>

Re:MMX,SSE,SSE2すげー
 KAZ  - 02/6/18(火) 22:44 -

引用なし
パスワード
   >x86の初歩ですね(^^;
>inc DWORD PTR [eax]
>としましょう。
>ただ、メモリに対する操作は、
>add eax, mem
>mov mem, eax
>のような形が基本です。
どうもありがとうございます。CバージョンのソースをVC++の混合モードでみると似たような記述になってました。
で、Releaseでコンパイルすると自力アセンブラよりC++コードの方が早かったです…。やはり付け焼刃ではコンバイラには勝てないようです。
Intelのコンパイラは配列の操作などにかなりMMXとか適用してくれるらしく、パフォーマンスは高いようです。
それのコードを真似して書いてみてもいいかもしれません。
MSコンパイラが出してくれれば保守性はいいのですが。
<Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)@U108051.ppp.dion.ne.jp>

  新規投稿 ┃ ツリー表示 ┃ 一覧表示 ┃ トピック表示 ┃ 検索 ┃ 設定 ┃ ホーム  
32 / 57 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
7920 C-BOARD v3.02 is not Free?