プロジェクト

全般

プロフィール

202556時点のまとめ » 履歴 » リビジョン 10

リビジョン 9 (開発 次郎, 2025/05/06 07:01) → リビジョン 10/14 (開発 次郎, 2025/05/06 07:07)

h1. 2025/5/6時点のまとめ 

 h2. 結果まとめ 

 # cpp_bin_float_100型とlong double型ではどれくらいの処理時間差があるのか? 
 ** (結果)2~4桁は違う(1/50~1/2000) 
 # MSYS2/MinGW64環境でパッケージはビルドできるのか? 
 ** GCC 4.8.5 
 *** (答え)4.8.2が最も古いのでPKGBUILDは不可。ただしSOURCEFORGE/x86_64-4.8.5-release-win32-sjlj-rt_v4-rev0.7zが使える 
 ** boost 
 *** (答え)mingw64/mingw-w64-x86_64-boost があるからパッケージ化できるはず。PKGBUILDがある場合 
 ** log4cpp 
 *** (答え)ucrt64/mingw-w64-ucrt-x86_64-log4cpp はあるがMinGWパッケージになるのか?不明 
 ** PROJ4 
 *** (答え)mingw64/mingw-w64-x86_64-proj があるからパッケージ化できるはず。PKGBUILDがある場合 

 

 h2. 詳細 

 

 h3. cpp_bin_float_100型とlong double型 処理速度比較 

 * MSYS/MinGW(Windows) 
 ** 比較表(単位はCPUクロック・カウント) 
 |項目|double|long double|cpp_bin_float_100|cpp_bin_float_100/long double| 
 |変数サイズ|8|16|80|| 
 |sin|284|274|613004|2237| 
 |cos|268|284|563428|1984| 
 |tan|224|292|612512|2098| 
 |pow|232|310|15891|51| 
 |sqrt|190|184|148743|808| 
 |サンプル|2355|4438|3526710|795| 

 * CentOS 7(WSL) 
 ** 比較表(単位はn秒) 
 |項目|double|long double|cpp_bin_float_100| 
 |変数サイズ|8|16|80| 
 |sin|100|100|91000| 
 |cos|100|100|92500| 
 |tan|100|100|185500| 
 |pow|0|100|10600| 
 |sqrt|0|100|12300| 
 |サンプル|700|1300|1046000| 

 * Rocky9(Linux) 
 ** 未計測 

 h3. 計測条件 

 * boost_1_66_0 
 ** MinGWがサポートされているのは1_66_0から 
 * GCC 4.8.5 
 * {{collapse(計測したホストPCのスペック,閉じる) 
 <pre> 
 C:\Users\Tatsuo>systeminfo 

 OS 名:                        Microsoft Windows 11 Pro for Workstations 
 OS バージョン:                10.0.26100 N/A ビルド 26100 
 OS ビルドの種類:              Multiprocessor Free 
 システム製造元:               Dell Inc. 
 システム モデル:              Precision 3240 Compact 
 システムの種類:               x64-based PC 
 プロセッサ:                   1 プロセッサインストール済みです。 
                             [01]: Intel64 Family 6 Model 165 Stepping 5 GenuineIntel ~3401 Mhz 
 BIOS バージョン:              Dell Inc. 1.33.0, 2025/02/04 
 物理メモリの合計:             40,672 MB 
 利用できる物理メモリ:         23,282 MB 
 仮想メモリ: 最大サイズ:       43,232 MB 
 仮想メモリ: 利用可能:         24,658 MB 
 ネットワーク カード:          3 NIC(s) インストール済みです。 
 仮想化ベースのセキュリティ: 状態: 実行中\ 
 Hyper-V の要件:               ハイパーバイザーが検出されました。Hyper-V に必要な機能は表示されません。 
 </pre> 
 }} 

 h3. 今回分かったこと 

 * 各パッケージをMinGW向けにソースからビルドしても、ほとんど失敗する 
 ** たいていのパッケージはMinGWという環境をサポートしていないためだと思われる 
 * MinGWにはMINGW-pacakgesというのがあって、オリジナルソースファイルにパッチを充ててMinGW用のパッケージを作成することができる 
 ** オリジナルソースからビルドしない方が良い 
 ** この仕組みは、過去に所望のバージョンのPKGBUILD(Makefileみたいなもの)があることが前提 
 *** 例えば、log4cppはもっとも古いもので1.1.4であるから、最新の1.1.5はパッケージ化することができない 
 *** 例えば、log4cppはurt64向けPKGBUILDはあるが、mingw64向けPKGBUILDがない