少なくともこのblogを利用し始めたときには関わっていた案件が、やっと終わりを迎えようとしている。
開発言語にはJavaを利用していた。
この案件以前はC(とほぼベターCとしてのC++)しか経験が無かった。
Javaのコンパイラ(javac)の時点では本番用のものであっても、デバッグ->on、最適化->offにしておくのが一般的(少なくと
もCの場合と比べた場合)らしい。が、本当なのだろうか。
そういえばこのプロジェクトでは、C実行モジュールでも最適化は行っていないものが多い。
確かに、以前少し測定してみた限りにおいては、実行速度に大差は無いように見えた。
しかし、かなりパフォーマンスが要求されるはずの箇所でもそのような実行ファイルがあるようなので、いずれ調査は必要ではないかと考えている。
数値計算系のプログラミングを大学でやっていた経験からすると、最適化の有無が速度に関係しないというのが信じられないのだが…
JavaはNullPointerExceptionのような実行時エラーでも、比較的容易に原因が突き止められるのが有難いと思ったのだが、debug
をoffにした場合、最適化をonにした場合はどうなのだろう、また実行速度と障害原因特定容易性とのトレードオフはどの程度なのだろう。
次案件はC++で決まりのようだ。そういう縁もあって
C++の設計と進化を読んで
いる。
どこかのサイトで「ストラウストラップの弁明集」といった風な説明がされてあったが、この本を一言で言うのであれば最適な表現だと思う。
GUIを持ったクライアントアプリケーション(おそらくOSはWindows)の案件も別件で入りそうである。
パフォーマンスが要求される場合、現状ではどういった開発環境が選択肢としてありえるのだろうか。
まだやはりVC6なのだろうか。JavaはGC大丈夫なのだろうか(-serverオプションでもつけるか?)。.NETはGCのパフォーマンスの話をあ
まり聞かない、そもそもクライアントサイドの本格的なプロジェクトの話自体あまり聞かない。アンマネージドC++は商用パッケージのサポートが薄い。
ここはひとつリッチクライアントというやつでFlashやらCurlやらでやろうか、という意思は初めから無い。
ふと
Microsoft
のサイトを見ると、VC6のメインストリームサポートというものはすでに終了している。とするとこの選択肢も消えるわけか。
(案件におけるリスクとしては、言語・開発環境よりむしろ担当者のスキルや思想が問題になる可能性が高いと思うのだが、まだ新人だし、あまりそういうこと
まで考えなくても良いように進めばいいな、と敢えて言語問題に逃避。)
最近のコメント