202556時点のまとめ » 履歴 » リビジョン 11
リビジョン 10 (開発 次郎, 2025/05/06 07:07) → リビジョン 11/14 (開発 次郎, 2025/05/06 07:12)
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がない
* log4cppはVisual Studio 2022でビルドできない
** クローンを使っても静的ライブラリは作れるものの、動的ライブラリは作れない
** %{color:darkred}使い続けていいのか?%