「数独の高速化」の見にくい表を直す

  • (by K, 2022.07.01)

(1)

  • 表1
環境  
Windows7 Professional 64bit版  
Core i7-2600 @ 3.40GHz

単位は秒    それぞれ sudoku* q_kawai.txt -1 の実行時間を表しています

        gcc 3.4.5      gcc 4.7.2       VC++2010
sudoku0   1960.5        1190.5          1247.8     C++でできるだけ簡潔に書いたもの  
sudoku1   1628.8        1052.2          1249.7     常識的な範囲で最適化したもの  
sudoku2    855.7         710.3           682.5     さらにループ展開したもの  
sudoku3    728.3         674.1           536.3     switch-caseの乱用  
sudoku4    327.2                                   count()等をアセンブラ化

最適化オプションは次の通りです  
gcc 3.4.5 : -O2 のみ(-O3だとかえって遅くなったので) 32bitコードを生成させています  
gcc 4.7.2 : -O3 -mtune=corei7 -march=corei7 これも32bitコードを生成させています(ミスです)  
VC++2010 : /Ox /Oi /Ot /Oy /favor:INTEL64 /GA (正確なバージョン: 16.00.40219.01 for x64)
  • 表2
gcc 4.6.3(linux), VC2012(win7), icl 12.0(win7)

オプション:  
g++ -Ofast -DNDEBUG -fomit-frame-pointer -march=native -msse4  
cl /Ox /Oi /Ot /Oy /favor:INTEL64 /GA  
icl /fast /EHs /DNDEBUG sudoku2.cpp /Qunroll-aggressive

環境:  
sandy-bridge i7-2600 3.4GHz  
g++のみWin7上のVMware上のlinuxで実行  
VC, iclはnative実行 

                                 icc        vc       gcc  
sudoku2 q_kawai.txt 20000000     10.048   10.982   10.710  
sudoku3 q_kawai.txt 20000000      9.144    8.69     9.68  
→ profile optimization           8.364    8.3      7.580

(↓これはビルドしなおすことなく実行・比較用)  
sudoku4 q_kawai.txt 20000000      5.119

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-07-01 (金) 17:43:52 (666d)