2012年03月24日

clang(LLVM)の面白い特性?


clang 3.0で面白い特性に気付いたので試してみました。

同一ファイル内だと思わぬ最適化が行われていました。

 何の効果もなければコールだって削除されてしまうというもの

  バグなのか?最適化なのか?

続きを読む
Posted by zengaichi at 20:47  |Comments(2)TrackBack(0) | Unix-Tools , 独り言 | このブログの読者になる | 更新情報をチェックする

2012年03月16日

VirtualBox4.1.2をubuntu10.11で

なんてことはない Windows8 を試してみたかったので。

ソフトウェアセンターから VirtualBoxを選んでインストール

 後は定番の設定

RDPでとりあえず接続はできたが

 1CPUでは小さくてギクシャクする
 4CPUぐらい振ればまあなんとかかんとか
 もうちょい色々とチューニングが必要なのでしょう

Windows8 というと

  ちょっと触ったぐらいでは良く分からないものの

    Vista が出た時よりはまし

  Visual Studio11 Betaも出た事だし後日試しに?

Posted by zengaichi at 00:48  |Comments(0)TrackBack(0) | 独り言 , Unix-Tools | このブログの読者になる | 更新情報をチェックする

2012年01月21日

向き不向きのコマンド?

sh のスクリプトで2重起動判定を行うのだが


if [ $(pidof -x $0 | wc -w) > 1 ]; then
echo '二重起動'
fi


で返す値は実際には単独で2正常動作せず? ubuntuだから?


if [ $(pgrep -fo $0) -ne $$ ]; then
echo '二重起動'
fi


の方が汎用的かも?

Posted by zengaichi at 21:14  |Comments(2)TrackBack(0) | Unix-Tools , 独り言 | このブログの読者になる | 更新情報をチェックする

2011年12月11日

安全運転なサンプルのサンプルの追加

危ないコードではないかという指摘を受けさらにサンプルコードを追加してみました。

安全運転でコストは上がります。

微々たるものなのでしょうか?


続きを読む
Posted by zengaichi at 15:31  |Comments(2)TrackBack(0) | 独り言 , Unix-Tools | このブログの読者になる | 更新情報をチェックする

またまた追加?

ソースコードの書き換えでどこまで高速化できるかということでさらにサンプルを追加しました。
ただしワーニング付きですが。

大きい改善にはつながらないようです。とは言え10パーセント程度の改善はしているようで。

インタフェースのハンドリングに気を付けるということが大切?

続きを読む
Posted by zengaichi at 13:24  |Comments(2)TrackBack(0) | 独り言 , Unix-Tools | このブログの読者になる | 更新情報をチェックする

サンプルコードの続き

さらに続きを書いてみました。

高速化のコツは仮想テーブルのハンドリングの回数を減らすことのようです。

続きを読む
Posted by zengaichi at 12:57  |Comments(0)TrackBack(0) | 独り言 , Unix-Tools | このブログの読者になる | 更新情報をチェックする

2011年12月10日

4番目のサンプルコードが書けない?( ̄o ̄;

最適化ということだったので
書き換えて見て
どう変化するかという点を見ようとしたのだが
うーむ4番目のサンプルコードが書けない。

続きを読む
Posted by zengaichi at 17:12  |Comments(2)TrackBack(0) | 独り言 , Unix-Tools | このブログの読者になる | 更新情報をチェックする

2011年12月04日

ソースコードのワーニングも破れ窓?

某プロセッサ用のコンパイラをソースコードからコンパイルしてみる。

 ワーニングも然ることながら

   コンパイラでなくスクリプトレベルで構築できない

     それもケアレスミスレベルで?

  それも某プロセッサのベンダが提供するソースコードで?
Posted by zengaichi at 22:27  |Comments(2)TrackBack(0) | 独り言 , Unix-Tools | このブログの読者になる | 更新情報をチェックする

2011年08月07日

いつの間に無料?

xcode 4 が有料だったが無料になっていた。

なのでダウンロードしインストールし、しげしげとinclude を見ていると MACH 3.0なんだと

 ええ、特別な OS のアプリケーション開発ツールは無料でないと

  ええ、特別なデバイスのアプリケーション開発ツールは有料でないと
Posted by zengaichi at 23:37  |Comments(0)TrackBack(0) | Unix-Tools , 独り言 | このブログの読者になる | 更新情報をチェックする

2011年07月24日

cast ?

某コードへのコンパイラのバージョンアップ兼ねてビルド中に


warning: dereferencing type-punned pointer will break strict-aliasing rules


その時のキャストは次の疑似コードの通りで

void ** ppv;
char * pc = NULL;
ppv = (void **)&pc;

次のように書き換えるとワーニングは消える。

void ** ppv;
char * pc = NULL;
char ** ppc = &pc;
ppv = (void **) ppc;

あるいは次のように書き換えてもワーニングは消える。

void ** ppv;
char * pca __attribute((may_alias)) = NULL;
ppv = (void **)&pca;


Posted by zengaichi at 22:13  |Comments(0)TrackBack(0) | Unix-Tools , 独り言 | このブログの読者になる | 更新情報をチェックする

2011年05月15日

OpenOcd 0.4.0を入れてみた

購入したJTAGのCDのソフトウェアが古いので

 最新版はどれかと入れてみた。

 cross chain tools は YAGARTO を使って。


 Olimex の JTAG なのでそれもサイトからドライバをアップデート。
 (アップデートしないと OpenOcd がドライバを認識してくれない)

昔のオマケ基盤 LPC2388 を使って動かしたところOK

  ただし、Flash の書込みはエラー?
    何かの拍子で書けていたみたいだが?
Posted by zengaichi at 23:15  |Comments(0)TrackBack(0) | Unix-Tools , 独り言 | このブログの読者になる | 更新情報をチェックする

2011年05月01日

バージョンアップあれこれ( ̄〇 ̄;

FreeBsd 8.2のGnomeは相変わらずポートからのコンパイルに根性が入ります。
ubuntu 11.04にもアップをそれはそれで。
 ATI系のドライバで OUT OF SCAN RANGE を食らいました。
 対策はアップグレードの前に標準のドライバに。
 変更前にCDでブートアップしても OUT OF SCAN RANGE でした。

両方とも GDM のバージョンが上がったので XDCMP が使えます。
やっとリモートで大きい画面を見ることができるように。

 でも両方とも謎の動きが。

 しばらく調整の日々が。

Posted by zengaichi at 16:57  |Comments(0)TrackBack(0) | Unix-Tools , 独り言 | このブログの読者になる | 更新情報をチェックする

2011年04月24日

OSがクラッシュした時がバージョンアップ時?

FreeBsd のOSがクラッシュしてしまいました。

 色々復元を試みるより 8.0 から 8.2 に只今バージョンアップ中。

Posted by zengaichi at 17:02  |Comments(0)TrackBack(0) | Unix-Tools , 独り言 | このブログの読者になる | 更新情報をチェックする

2010年12月30日

gdm 2.30の機能?

VNCで接続できるみたい。

 ただし、XDCMPはできない模様


ubuntu 10.10 と FreeBsd 8.0で試してみた
Posted by zengaichi at 21:24  |Comments(0)TrackBack(0) | Unix-Tools | このブログの読者になる | 更新情報をチェックする

2010年10月22日

意外なところの最適化

メモリリークのポイントを探すのに


sprintf(buffer, "%s", data);


という C のコードが


strcpy(buffer, data);


と最適化されてしまってました。
strcpyを使わずにsprintfで書く人が多いのでしょうか。

多いものを最適にする原則の世界から

Posted by zengaichi at 21:54  |Comments(0)TrackBack(0) | Unix-Tools | このブログの読者になる | 更新情報をチェックする

watchmalloc

Solarisで提供する
ヒープメモリのリークを探すためのライブラリ

shの場合には
LD_PRELOAD=watchmalloc.so.1
export LD_PRELOAD
MALLOC_DEBUG=DEBUG
export MALLOC_DEBUG
と環境変数にセットして、問題の発生しているバイナリを実行する。

このライブラリでメモリをチェックして
問題があればトレースでコアを出力してくれる。

ただし、いくつかの注意点がある。

 実行速度が遅い。
 メモリリークを起してる環境でないと検出できない。




Posted by zengaichi at 21:50  |Comments(0)TrackBack(0) | Unix-Tools | このブログの読者になる | 更新情報をチェックする

2010年05月29日

古い資料も残しておくべきもの?

4年前の検証結果を眺める
Posted by zengaichi at 20:03  |Comments(0)TrackBack(0) | Unix-Tools | このブログの読者になる | 更新情報をチェックする

2010年05月03日

あれっ?色々なオプションが

gcc4.5.1に色々なオプションがさらに付いたようです。

freeBsd

Posted by zengaichi at 23:09  |Comments(0)TrackBack(0) | 独り言 , Unix-Tools | このブログの読者になる | 更新情報をチェックする

2010年04月06日

StreamTokenizerの効用らしきもの

 Readerから派生してるのはFileReaderだけでなくStringReaderにも派生している。

 また、StreamTokenizerの推奨のコンストラクタは引数としてReaderである。

 resetSyntaxメソッドを使ってクリアしてしまえばいろいろ都合の良い設定ができる。

 たとえば、quteChar('"')を定義し、ホワイトスペースをwhitespaceCharメソッドで適切にブランク、タブ、CRLFなどを設定しまえば、ダブルクォート囲みのCSV用Tokenizerが出来上がりとなる。

 ちなみに、StringTokenizerは非推奨でsplitやregxを使えということなので、やはり便利なのはStreamTokenizerといったところだろうか。
Posted by zengaichi at 21:06  |Comments(0)TrackBack(0) | Unix-Tools , 独り言 | このブログの読者になる | 更新情報をチェックする

2010年03月18日

障害を起こすことが多いプログラムは-Wallで問題が検出できるらしい?

ここ障害対応に行っているとある規則があった。

コンパイラ(gcc)の警告オプションを-Wallとすると

  山のように警告がでる。

   その中にバグがある。

 警告が沢山でるようなコードは潜在バグも多いようだ。

  そして、修正も困難なようだ。

あれ?前も書いたような世界から
(なくならないもの)

Posted by zengaichi at 21:48  |Comments(0)TrackBack(0) | Unix-Tools , 独り言 | このブログの読者になる | 更新情報をチェックする