月別アーカイブ: 2016年4月

Windows10 の標準アプリを削除してメモリ使用量削減

標準アプリには使わないものも多く、しかも GUI からアンインストールできないものもある。しかも、それらが結構な量のメモリを消費している感じがしたので、 PowerShell を使ってアンインストールした。

Windows10の標準アプリを削除する裏技!

自分は今のところ標準のメーラを通知用に使って、メールの読み書きには thunderbird を使っている。Thunderbird が Action center に対応してくれればメーラも削除可能なのだけれど。

すると、正確には測ってないけど起動直後 1.6GB くらいだった使用メモリ量が 1.2GB くらいまで減った(気がする)。
使わないアプリが入っているのはまだ許せるとして、使わなくてもバックグラウンドでリソースを消費するのは良くないですね。こういう部分がユーザエクスペリエンスを下げていると思う。

SystemTap を使ったサンプリングに依らない動的なコールグラフの作成

サンプリングに依る動的なコールグラフを作成する方法はいろいろあるけど、これだとサンプルが取得できないパスに関してはコールグラフが取得できないことになってしまう。ソースコード読みをしているときなど完全なコールグラフがほしい時もあって、その方法を考えた。

SystemTap を使うと、すべての関数呼び出しのトレースを取得できる。これを解析すれば完全な動的コールグラフが作成できる。ところが、トレースからコールグラフを作るいいツールがない。

一応、小さいトレースなら、 vonnyfly/kernel_visualization が使えるけど、内部の作り的にトレースをいったんメモリにため込むので、大きなトレースを食わせるとメモリを食いつぶして死んでしまう。用途に合ったものがなければ作るしかないということで、大きなトレースでも扱えるプログラムを C++ で書いた。本来は SystemTap 内でコールグラフを作るのがスマートなんだけど、いまいち stp ファイルの作り方勉強してないからなぁ・・・というところ。

ちなみに SystemTap のトレースは SPEC2006 bzip2 の test 入力で 4GByte 超える。でかすぎ。

C++ で正規表現を使うときには g++-4.9 以上が必要

C++ で正規表現(regex)を使おうと思って、プログラムを作成していた。コンパイルは通るけど、どうも動作が思ったようにならない。しばらく悩んだ結果見つけたのが以下。

Is gcc 4.8 or earlier buggy about regular expressions?

4.8 以下のバージョンだと正規表現がちゃんとサポートされてないという話らしい。というわけで、g++-4.9 をインストールしたところ所望の動作を得られた。

regex_match() 便利でいい。