* あああ
* 「数独の高速化」の見にくい表を直す
-(by [[K]], 2022.07.01)

** 「数独の高速化」の見にくい表を直す
** (1)
-https://blog.cybozu.io/entry/1692

-表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
 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