タグ

Optimizationに関するnminoruのブックマーク (25)

  • プログラムによる数値演算のベンチマーク

    C/Javaプログラムによる数値演算の速度差をベンチしてみました。 チェック項目として、 「カラの関数の呼び出し」 「整数(int型)の加減乗除算とシフト」 「単精度浮動小数点(float型)の加減乗除算」 「倍精度浮動小数点(double型)の加減乗除算」 「三角関数演算関数(cos)の呼び出し」 「平方根演算関数(sqrt)の呼び出し」 「3次元ベクトルの単位ベクトルの計算」 をテストし、それぞれを「10000*10000回」繰り返して演算し、その処理時間を計測します。 テスト環境は、Windows2000マシン(Athlon 1100MHz / Mem 512MB)と OS X10.2.2マシン(eMac(G4 700MHz / Mem 384MB))です。 Windows環境では、コンパイラとして「Borland C++5.5.1」「Visual C++6.0」「J2SE 1.4.

  • The Stanford SUIF Compiler Group

    Released Software Checklipse Eclipse plugin: plugin for finding errors in Eclipse source code using lightweight static analysis. 2005. KeepResident Eclipse plugin: plugin for Eclipse on Windows that keeps Eclipse from being swapped out, greatly reducing pause times. 2004. bddbddb: BDD-Based Deductive DataBase. 2004. Dynamic Bounds Checking: The CRED dynamic bounds checking techniques have been int

    nminoru
    nminoru 2005/06/09
    Monica Lam 率いる並列コンパイラのためのフレームワーク
  • Data Prefetch Support - GNU Project

    Contents Introduction Elements of Data Prefetch Support Locality Read or Write Access Size of block to access Base update Faulting v. Non-faulting Miscellaneous Features Guidelines for Prefetching Data Data Prefetch Support on GCC Targets Summary 3DNow! Alpha AltiVec IA-32 SSE IA-64 MIPS MMIX PA-RISC PowerPC SuperH SPARC XScale References Introduction The framework for data prefetch in GCC support

  • AltiVecは本当に速いのか?

    Mac OS XのG4以降で使用できる「AltiVec」で数値演算の高速化を行います。 AltiVecがどのようなことを得意としているのか、なども調べてみました。 AltiVecとは? モトローラのCPU「PowerPC G4」にて、整数・および浮動小数点操作をハードウェアにて処理する命令セットを「AltiVec」といいます。 並列で処理するベクトル演算などを得意とします。「VelocityEngine」とも呼ばれています。 AltiVecは、128ビットのデータを一括して処理することができます。 1つのfloatの浮動小数点値は32ビットですので、float型なら最大4つ(128/32=4)のデータを同時にこなすことができる、ということになります。 いろいろテストして見た結果、「Mac OS Xは、Windowsよりも遅い」です。 これは、実際にテストしてみたりアプリを作って調べたりした

  • advanced optimization FPU

    FPUレジスタは通常の汎用レジスタと違って8個まで値を格納できるスタック形式です. スタックトップをstと書き, 以下st(1),st(2),...st(7)と表記します. スタック形式なので, 通常はメモリから直接st(i) (i>0) に読み込むことは出来ません. メモリの値を一端stにpush (読み込み) してからst(i)に移します. 9個以上pushすると例外が発生するので注意します. 不要になった値はstから順にpopして消去します. レジスタの値をメモリに書き込む時も同様で, 通常はstの値だけしか書き込めません. 尚, 汎用レジスタと違ってFPU命令には即値モードはありません. 全てアドレスを指定して値のやり取りをします.