zgnuboyやmplayer-w100にGUIを付けない理由

なんか勘違いしている人がいそうなので書いてみます。GUIを付けないのではなく、付けられないのです。

C++のライブラリはgcc-2系列とgcc-3系列で互換性がありません。システムのlibqtはgcc-2.95.3でビルドされているので、アプリケーションをgcc-3系列でビルドしてもlibqtとリンクできません。

なぜgcc-3系列を使うか?実際にベンチマークを取ってみました。


$ mplayer-gcc2.95.3 -vo null -quiet -benchmark -nosound /mnt/card/RL_HQ_640x352_1024_128.avi

BENCHMARKs: VC: 178.890s VO: 0.331s A: 0.000s Sys: 2.849s = 182.071s
BENCHMARK%: VC: 98.2530% VO: 0.1820% A: 0.0000% Sys: 1.5650% = 100.0000%

$ mplayer-gcc3.4.2 -vo null -quiet -benchmark -nosound /mnt/card/RL_HQ_640x352_1024_128.avi

BENCHMARKs: VC: 142.582s VO: 0.217s A: 0.000s Sys: 2.785s = 145.584s
BENCHMARK%: VC: 97.9380% VO: 0.1493% A: 0.0000% Sys: 1.9128% = 100.0000%

とまぁこのように、ただコンパイラを変えただけで速度が1.25倍になります。これは馬鹿にできない違いだと思います。

よって最高のパフォーマンスとGUIの両立を求めると、zemfe+zgnuboyのようにGUI部分と本体を物理的に分離し、プロセス間で通信するしかありません。これが非常に手間なんですよ、はい。

なんかいい解決策があれば教えてください。

余談

QtCっつーのがあって、Qt3系列用ですが、QtをCでラップしてます。
C ABIはgcc-2とgcc-3で互換性がある(っぽい)ので、QtCをQt2用に変更し、
さらにそれをC++でラップすればネイティヴGUIを実装するのも無理ではありません。
なんかヒジョーに無駄な作業なので、やる気おきませんが。
SL-C3000には期待できませんが、さらに次機種でもgcc-2系列が使われているようであれば、OpenZaurusなどへの移行を考えます。