2012年03月24日
clang(LLVM)の面白い特性?
clang 3.0で面白い特性に気付いたので試してみました。
同一ファイル内だと思わぬ最適化が行われていました。
何の効果もなければコールだって削除されてしまうというもの
バグなのか?最適化なのか?
続きを読む
2012年03月16日
VirtualBox4.1.2をubuntu10.11で
なんてことはない Windows8 を試してみたかったので。
ソフトウェアセンターから VirtualBoxを選んでインストール
後は定番の設定
RDPでとりあえず接続はできたが
1CPUでは小さくてギクシャクする
4CPUぐらい振ればまあなんとかかんとか
もうちょい色々とチューニングが必要なのでしょう
Windows8 というと
ちょっと触ったぐらいでは良く分からないものの
Vista が出た時よりはまし
Visual Studio11 Betaも出た事だし後日試しに?
ソフトウェアセンターから VirtualBoxを選んでインストール
後は定番の設定
RDPでとりあえず接続はできたが
1CPUでは小さくてギクシャクする
4CPUぐらい振ればまあなんとかかんとか
もうちょい色々とチューニングが必要なのでしょう
Windows8 というと
ちょっと触ったぐらいでは良く分からないものの
Vista が出た時よりはまし
Visual Studio11 Betaも出た事だし後日試しに?
2012年01月21日
向き不向きのコマンド?
sh のスクリプトで2重起動判定を行うのだが
で返す値は実際には単独で2正常動作せず? ubuntuだから?
の方が汎用的かも?
if [ $(pidof -x $0 | wc -w) > 1 ]; then
echo '二重起動'
fi
で返す値は実際には単独で2正常動作せず? ubuntuだから?
if [ $(pgrep -fo $0) -ne $$ ]; then
echo '二重起動'
fi
の方が汎用的かも?
2011年12月11日
またまた追加?
ソースコードの書き換えでどこまで高速化できるかということでさらにサンプルを追加しました。
ただしワーニング付きですが。
大きい改善にはつながらないようです。とは言え10パーセント程度の改善はしているようで。
インタフェースのハンドリングに気を付けるということが大切?
続きを読む
ただしワーニング付きですが。
大きい改善にはつながらないようです。とは言え10パーセント程度の改善はしているようで。
インタフェースのハンドリングに気を付けるということが大切?
続きを読む
2011年12月10日
2011年12月04日
ソースコードのワーニングも破れ窓?
某プロセッサ用のコンパイラをソースコードからコンパイルしてみる。
ワーニングも然ることながら
コンパイラでなくスクリプトレベルで構築できない
それもケアレスミスレベルで?
それも某プロセッサのベンダが提供するソースコードで?
ワーニングも然ることながら
コンパイラでなくスクリプトレベルで構築できない
それもケアレスミスレベルで?
それも某プロセッサのベンダが提供するソースコードで?
2011年08月07日
いつの間に無料?
xcode 4 が有料だったが無料になっていた。
なのでダウンロードしインストールし、しげしげとinclude を見ていると MACH 3.0なんだと
ええ、特別な OS のアプリケーション開発ツールは無料でないと
ええ、特別なデバイスのアプリケーション開発ツールは有料でないと
なのでダウンロードしインストールし、しげしげとinclude を見ていると MACH 3.0なんだと
ええ、特別な OS のアプリケーション開発ツールは無料でないと
ええ、特別なデバイスのアプリケーション開発ツールは有料でないと
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;
2011年05月15日
OpenOcd 0.4.0を入れてみた
購入したJTAGのCDのソフトウェアが古いので
最新版はどれかと入れてみた。
cross chain tools は YAGARTO を使って。
Olimex の JTAG なのでそれもサイトからドライバをアップデート。
(アップデートしないと OpenOcd がドライバを認識してくれない)
昔のオマケ基盤 LPC2388 を使って動かしたところOK
ただし、Flash の書込みはエラー?
何かの拍子で書けていたみたいだが?
最新版はどれかと入れてみた。
cross chain tools は YAGARTO を使って。
Olimex の JTAG なのでそれもサイトからドライバをアップデート。
(アップデートしないと OpenOcd がドライバを認識してくれない)
昔のオマケ基盤 LPC2388 を使って動かしたところOK
ただし、Flash の書込みはエラー?
何かの拍子で書けていたみたいだが?
2011年05月01日
バージョンアップあれこれ( ̄〇 ̄;
FreeBsd 8.2のGnomeは相変わらずポートからのコンパイルに根性が入ります。
ubuntu 11.04にもアップをそれはそれで。
ATI系のドライバで OUT OF SCAN RANGE を食らいました。
対策はアップグレードの前に標準のドライバに。
変更前にCDでブートアップしても OUT OF SCAN RANGE でした。
両方とも GDM のバージョンが上がったので XDCMP が使えます。
やっとリモートで大きい画面を見ることができるように。
でも両方とも謎の動きが。
しばらく調整の日々が。
ubuntu 11.04にもアップをそれはそれで。
ATI系のドライバで OUT OF SCAN RANGE を食らいました。
対策はアップグレードの前に標準のドライバに。
変更前にCDでブートアップしても OUT OF SCAN RANGE でした。
両方とも GDM のバージョンが上がったので XDCMP が使えます。
やっとリモートで大きい画面を見ることができるように。
でも両方とも謎の動きが。
しばらく調整の日々が。
2011年04月24日
2010年12月30日
2010年10月22日
意外なところの最適化
メモリリークのポイントを探すのに
という C のコードが
と最適化されてしまってました。
strcpyを使わずにsprintfで書く人が多いのでしょうか。
sprintf(buffer, "%s", data);
という C のコードが
strcpy(buffer, data);
と最適化されてしまってました。
strcpyを使わずにsprintfで書く人が多いのでしょうか。
多いものを最適にする原則の世界から
watchmalloc
Solarisで提供する
ヒープメモリのリークを探すためのライブラリ
shの場合には
LD_PRELOAD=watchmalloc.so.1
export LD_PRELOAD
MALLOC_DEBUG=DEBUG
export MALLOC_DEBUG
と環境変数にセットして、問題の発生しているバイナリを実行する。
このライブラリでメモリをチェックして
問題があればトレースでコアを出力してくれる。
ただし、いくつかの注意点がある。
実行速度が遅い。
メモリリークを起してる環境でないと検出できない。
ヒープメモリのリークを探すためのライブラリ
shの場合には
LD_PRELOAD=watchmalloc.so.1
export LD_PRELOAD
MALLOC_DEBUG=DEBUG
export MALLOC_DEBUG
と環境変数にセットして、問題の発生しているバイナリを実行する。
このライブラリでメモリをチェックして
問題があればトレースでコアを出力してくれる。
ただし、いくつかの注意点がある。
実行速度が遅い。
メモリリークを起してる環境でないと検出できない。
2010年05月29日
2010年05月03日
2010年04月06日
StreamTokenizerの効用らしきもの
Readerから派生してるのはFileReaderだけでなくStringReaderにも派生している。
また、StreamTokenizerの推奨のコンストラクタは引数としてReaderである。
resetSyntaxメソッドを使ってクリアしてしまえばいろいろ都合の良い設定ができる。
たとえば、quteChar('"')を定義し、ホワイトスペースをwhitespaceCharメソッドで適切にブランク、タブ、CRLFなどを設定しまえば、ダブルクォート囲みのCSV用Tokenizerが出来上がりとなる。
ちなみに、StringTokenizerは非推奨でsplitやregxを使えということなので、やはり便利なのはStreamTokenizerといったところだろうか。
また、StreamTokenizerの推奨のコンストラクタは引数としてReaderである。
resetSyntaxメソッドを使ってクリアしてしまえばいろいろ都合の良い設定ができる。
たとえば、quteChar('"')を定義し、ホワイトスペースをwhitespaceCharメソッドで適切にブランク、タブ、CRLFなどを設定しまえば、ダブルクォート囲みのCSV用Tokenizerが出来上がりとなる。
ちなみに、StringTokenizerは非推奨でsplitやregxを使えということなので、やはり便利なのはStreamTokenizerといったところだろうか。

