読者です 読者をやめる 読者になる 読者になる

fugagaの備忘録

しがないプログラマの備忘録。好きなモノ:機械学習、Linux、vim、C/C++、Scala、php、CakePHP、python

Macでpython+opencvを使う

対象バージョン

Mac: OSX El Capitan
python: 2.7
opencv: 3.0

インストール

brewを使ってインストールする

brew install python
brew tap homebrew/science
brew install opencv3 --with-contrib
brew link opencv3 --force

cv2.xfeatures2d(SIFT,SURF・・・), drawMatchesを使うために、--with-contribオプションを追加する必要がある。

画像マッチング

スケール・回転にロバストな画像マッチング。queryImageが、trainImageに1つだけ含まれていると仮定している。

Feature Matching + Homography to find Objects — OpenCV 3.0.0-dev documentation

このままだと動かないので、

sift = cv2.SIFT()

sift = cv2.xfeatures2d.SIFT_create()

に書き換える。

EclipseでArduino開発(Mac)

本家のArduino IDE(Arduino.app)でもいいんですが、補完機能がないとか、少し開発規模が大きくなると辛くなってくるので、本格的なIDEが欲しいところですね。

Arduino Eclipse Plugin - Welcome!

本家サイトでも紹介されていますが、ここで、EclipseArduinoアドインが提供されています。
Macでアドインのインストールを試したのですが、ぶっちゃけ設定が面倒だったので、途中で諦めました。

Arduino Eclipse Plugin - OsX Latest Stable

ここで、Ecpliseごと落としたほうが楽です。
が、それでもいくつか設定が必要です。(Mac OSX Yosemiteのみで検証しています。)

設定1:Arduino.appのパスを設定

Eclipse Arduino IDE > 環境設定 > Arduinoで、以下のような感じで設定します。

f:id:fugaga:20150301030653p:plain

Arduino.appをそもそもダウンロードしてない方は、本家からダウンロードしてきましょう。
なお、バージョンによっては、Warningがでますが、少なくとも、1.6では動きました。

設定2:ファイル拡張子の追加

Eclipse Arduino IDE > 環境設定 > C/C++ > File Types に、ino, pde拡張子を追加。

f:id:fugaga:20150301024348p:plain

設定3:lockディレクトリの追加

ターミナルで

sudo mkdir /var/lock
sudo chmod 777 /var/lock

を実行。
(シリアルポートがすでに使われてて、使えねーよ!と言われるのを回避。)
以前から、lockディレクトリをつくっていた方は飛ばしてください。



以上で、Macで、快適なArduino開発ライフを送れるはず!
(補完をしたかったら、Content Assistでググってください。
 少なくともキーバインドを変えないと、思い通りに動きません。)

ハイパスフィルタ(High Pass Filter)

ローパスフィルタの記事は多いけど、ハイパスフィルタの記事はあまりなかったので、メモ。

ローパスフィルタ

微細なギザギザしたノイズをカットできる。

x[i] = coef*x[i] + (1.0-coef)*x[i-1]

ただし、位相が遅れるので、オンライン処理しないなら、移動平均を取った方がベター。

x[i] = (x[i-1] + x[i] + x[i+1]) / 3

単純な移動平均でなく、重み付けしても。

ハイパスフィルタ

低周波のノイズをカットできる。
現在の値からローパスフィルタの結果を引けば、ハイパスフィルタの結果になる。

tmp = x[i]
x[i] = coef*x[i] + (1.0-coef)*x[i-1]
y[i] = tmp - x[i]

こちらも、位相が遅れるので、オンライン処理しないなら、移動平均で求めたローパスフィルタの結果を使ったほうがベター。

tmp = x[i]
x[i] = (x[i-1] + x[i] + x[i+1]) / 3
y[i] = tmp - x[i]

pythonで外部コマンドをたたいて標準出力を取得

いつまで使えるかわからないけどcommandsが便利。
http://docs.python.jp/2/library/commands.html

import commands
a = commands.getoutput("ls | wc -l")
print a

2.7以降なら、subprocess.check_outputが使えるっぽいけど、パイプとかどう使えばいいんだろ。。。

R言語 入門

統計処理に使われるR言語ですが、プログラミング言語としての入門サイトがなかったのでつくりました。
C/C++pythonといったメジャーな言語を習得したプログラミング中級者以上向けに、ポイントのみ解説します。

Hello world

"Hello world"

と打てば終わり。勝手に表示される。

print("Hello world")

でもいけるが、上と効果がまったく同じ。任意のオブジェクトをこんな感じで表示できる。

ちなみに、上は、”オブジェクトを評価した結果が表示される”だけなので、きちんと出力するためには、catを使う。

cat("Hello world\n")

ちなみに、catも任意のオブジェクトを表示できる。

R言語において、C/C++のprintfっぽく使える関数は、sprintf。使い方はC/C++のsprintfと同じで、フォーマット文字列 -> 文字列 関数。

sprintf("%2.3f\n", 1.3)

以上をまとめると、C言語における、printf("Hello world")をそのまま書くとすると、

cat(sprintf("Hello world\n"))

という感じ。

コメント

”#”でコメントアウトできる

# コメント1
a <- 1 # コメント2

変数

R言語における変数の概念は、C/C++みたいなのじゃなく、pythonみたいな感じ。代入は、

a <- 10

という形で書ける。基本的に、セミコロンは不要だが、複数命令を1行で書くときは、

a <- 10; b <- 20

という形で使う。

pythonのように、型宣言なしで使えて、

a <- 10
a <- "hoge"

というように、型を変えた代入も可能。
空のオブジェクトで初期化することもできる。

a <- numeric()

タイプ、モード、ストレージモード、クラス、というややこしい概念がある。理解しなくても使える気がする。
ややこしい概念を飛ばして、基本的な型を、ざっくり書くと以下の感じ。

型名 意味
logical 論理型
numeric 数値型
integer 整数型
double 浮動小数点型
complex 複素数
character 文字列型

配列(ベクトル)

R言語にも、配列(array)はあるが、まずはベクトルを習得した方がベターかも。ということで、ここではベクトルの説明。注意点としては、R言語において、添字が0からでなく、1から始まること。

基本的な使い方

a <- c(2,4,8,10,13) # 初期化
a[1:3] # 1番目から3番目の要素 => 2,4,8
a[-c(3,5)] # 3番目と5番目を除く要素
length(a) # サイズ

pythonのディクショナリっぽくも使える。

a <- c(1,2,3) # 初期化
names(a) <- c("piyo","fuga","hoge") # 名前をつける
a["hoge"] # => 3
a[c("piyo","hoge")] # => 1 3

演算をまとめて実行できる。

a <- c(1,2,3) # 初期化
a * 2 # => 2 4 6
sum(a) # => 6
a > 2 # => FALSE FALSE TRUE
a[ a > 2 ] # => 3

要素の追加・挿入・削除・置換

a <- 1:4 # 初期化
a[length(a)+1] <- 5 # 追加(新たにオブジェクトを作成しない)
a <- c(a, 4) # 追加(新たにオブジェクトを作成する)
a <- append(a, 1, after=3) # 挿入(新たにオブジェクトを作成する)
a <- a[-2] # 削除(新たにオブジェクトを作成する)
a <- replace(a, c(2,4), c(0,0)) # 置換(新たにオブジェクトを作成する) 2番目と4番目の要素を0に置換する

演算子

演算子 意味
+ 加算
- 減算
* 乗算
/ 除算
^ (**) べき乗
%% 剰余
%/% 整数除算

制御文

条件分岐

執筆中・・・

ループ

執筆中・・・

関数

執筆中・・・

クラス

執筆中・・・

オーバーロード

S3クラス、というものを使って、いわゆるオーバーロードを実現できる。

キャスト

as.vector(hoge), as.integer(hoge),...という形で書ける。

例外制御

言語オブジェクト

文字列を関数に変換できる機能。

コンソールコマンド

getwd() # 現在のディレクトリを表示
setwd("../") # ディレクトリを移動
list.files() # ファイル一覧を表示
source("hoge.R") # Rスクリプトの実行

メモリ使用量の計測 (valgrind)

Linuxでプログラムのメモリ使用量(時間-メモリ使用量のグラフ、最大値、、、)を計測するには、valgrindコマンドが便利。
インストールされていない場合、CentOSの場合は

yum install valgrind

でインストールする。

使い方は、lsのメモリ使用量を計測する場合、

valgrind --tool=massif --stacks=yes --trace-children=yes ls

とすると、

==17703== Massif, a heap profiler
==17703== Copyright (C) 2003-2012, and GNU GPL'd, by Nicholas Nethercote
==17703== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==17703== Command: ls
==17703==
a  b  c  d
==17703==

と表示され、結果として、massif.out.17703が生成されるので、

ms_print massif.out.17703

とすると、メモリ使用量の詳細情報が表示される。

--------------------------------------------------------------------------------
Command:            ls
Massif arguments:   --stacks=yes
ms_print arguments: massif.out.17703
--------------------------------------------------------------------------------


    KB
57.19^                                                               #
     |                                                               #
     |                                                               #
     |                                                               #
     |                                                               #
     |                                                               #
     |                                                               #
     |                                                               #
     |                                                               #  :
     |                                                               #  :
     |                                                               #  :
     |                                                               # ::
     |                                                              @#::::@:::
     |                                                              @#::::@:::
     |                                                              @#::::@:::
     |                                                              @#::::@:::
     |                                                              @#::::@:::
     |                                                              @#::::@:::
     |                                                              @#::::@:::
     |    :@@:::@                                             :@@@@:@#::::@:::
   0 +----------------------------------------------------------------------->ki
     0                                                                   395.0

Number of snapshots: 84
 Detailed snapshots: [5, 8, 22, 26, 39, 44, 49, 51, 53, 55, 59, 60, 61, 62, 63, 64, 65, 66 (peak), 76]

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
  0              0                0                0             0            0
  1          2,909              664                0             0          664
  2          9,939            2,520                0             0        2,520
  3         16,135            2,608                0             0        2,608
  4         25,180            3,088                0             0        3,088
  5         32,747            3,424                0             0        3,424
00.00% (0B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
  6         39,874            3,792                0             0        3,792
  7         47,599            4,352                0             0        4,352
  8         56,803            5,352                0             0        5,352
00.00% (0B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
  9         64,699            1,032                0             0        1,032
 10         70,159              872                0             0          872
 11         77,890            1,032                0             0        1,032
 12         85,991            1,320                0             0        1,320
 13         93,908              936                0             0          936
 14        101,624            1,592                0             0        1,592
 15        110,423            1,528                0             0        1,528
 16        116,349            1,584                0             0        1,584
 17        122,274              936                0             0          936
 18        128,820            1,528                0             0        1,528
 19        137,714            1,528                0             0        1,528
 20        144,014            1,272                0             0        1,272
 21        148,464            1,528                0             0        1,528
 22        154,794            1,272                0             0        1,272
00.00% (0B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 23        164,696            1,528                0             0        1,528
 24        170,702            1,272                0             0        1,272
 25        176,513            1,272                0             0        1,272
 26        183,681            1,584                0             0        1,584
00.00% (0B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 27        189,356            1,528                0             0        1,528
 28        195,348            1,528                0             0        1,528
 29        200,788            1,528                0             0        1,528
 30        209,397            1,528                0             0        1,528
 31        215,303            1,272                0             0        1,272
 32        220,712            1,528                0             0        1,528
 33        226,240              936                0             0          936
 34        234,499            1,528                0             0        1,528
 35        243,971              936                0             0          936
 36        250,188            1,320                0             0        1,320
 37        255,627            1,280                0             0        1,280
 38        261,164              936                0             0          936
 39        269,409              768                0             0          768
00.00% (0B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 40        275,262            1,528                0             0        1,528
 41        280,678            1,120                0             0        1,120
 42        286,452              344                0             0          344
 43        291,920            1,128                0             0        1,128
 44        297,397            1,712              568            16        1,128
33.18% (568B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->33.18% (568B) 0x3A08A67149: __fopen_internal (in /lib64/libc-2.12.so)
  ->33.18% (568B) 0x3A0A20CD2B: ??? (in /lib64/libselinux.so.1)
    ->33.18% (568B) 0x3A0A215CB4: ??? (in /lib64/libselinux.so.1)
      ->33.18% (568B) 0x3A0A204FA1: ??? (in /lib64/libselinux.so.1)

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 45        302,823            1,184              688            32          464
 46        308,223               32                0             0           32
 47        313,808            1,032                0             0        1,032
 48        319,755            4,192            2,676            84        1,432
 49        325,254            4,920            3,592           240        1,088
73.01% (3,592B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->69.11% (3,400B) 0x3A08A29DF5: _nl_intern_locale_data (in /lib64/libc-2.12.so)
| ->69.11% (3,400B) 0x3A08A2A44B: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
|   ->69.11% (3,400B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|     ->69.11% (3,400B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|       ->69.11% (3,400B) 0x4084AD: ??? (in /bin/ls)
|         ->69.11% (3,400B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->02.44% (120B) 0x3A08A2A3D7: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
| ->02.44% (120B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|   ->02.44% (120B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|     ->02.44% (120B) 0x4084AD: ??? (in /bin/ls)
|       ->02.44% (120B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->01.46% (72B) 0x3A08A81040: strdup (in /lib64/libc-2.12.so)
| ->01.22% (60B) 0x3A08A29266: setlocale (in /lib64/libc-2.12.so)
| | ->01.22% (60B) 0x4084AD: ??? (in /bin/ls)
| |   ->01.22% (60B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
| |
| ->00.24% (12B) in 1+ places, all below ms_print's threshold (01.00%)
|
->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%)

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 50        328,295            4,936            3,628           276        1,032
 51        330,744            5,416            3,652           300        1,464
67.43% (3,652B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->62.78% (3,400B) 0x3A08A29DF5: _nl_intern_locale_data (in /lib64/libc-2.12.so)
| ->62.78% (3,400B) 0x3A08A2A44B: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
|   ->62.78% (3,400B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|     ->62.78% (3,400B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|       ->62.78% (3,400B) 0x4084AD: ??? (in /bin/ls)
|         ->62.78% (3,400B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->02.44% (132B) 0x3A08A81040: strdup (in /lib64/libc-2.12.so)
| ->02.22% (120B) 0x3A08A29266: setlocale (in /lib64/libc-2.12.so)
| | ->02.22% (120B) 0x4084AD: ??? (in /bin/ls)
| |   ->02.22% (120B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
| |
| ->00.22% (12B) in 1+ places, all below ms_print's threshold (01.00%)
|
->02.22% (120B) 0x3A08A2A3D7: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
| ->02.22% (120B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|   ->02.22% (120B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|     ->02.22% (120B) 0x4084AD: ??? (in /bin/ls)
|       ->02.22% (120B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%)

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 52        333,677            5,296            3,688           336        1,272
 53        334,455            5,640            3,688           336        1,616
65.39% (3,688B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->60.28% (3,400B) 0x3A08A29DF5: _nl_intern_locale_data (in /lib64/libc-2.12.so)
| ->60.28% (3,400B) 0x3A08A2A44B: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
|   ->60.28% (3,400B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|     ->60.28% (3,400B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|       ->60.28% (3,400B) 0x4084AD: ??? (in /bin/ls)
|         ->60.28% (3,400B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->02.77% (156B) 0x3A08A81040: strdup (in /lib64/libc-2.12.so)
| ->02.55% (144B) 0x3A08A29266: setlocale (in /lib64/libc-2.12.so)
| | ->02.55% (144B) 0x4084AD: ??? (in /bin/ls)
| |   ->02.55% (144B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
| |
| ->00.21% (12B) in 1+ places, all below ms_print's threshold (01.00%)
|
->02.13% (120B) 0x3A08A2A3D7: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
| ->02.13% (120B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|   ->02.13% (120B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|     ->02.13% (120B) 0x4084AD: ??? (in /bin/ls)
|       ->02.13% (120B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->00.21% (12B) in 1+ places, all below ms_print's threshold (01.00%)

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 54        337,415            5,376            3,732           372        1,272
 55        337,965            5,720            3,732           372        1,616
65.24% (3,732B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->59.44% (3,400B) 0x3A08A29DF5: _nl_intern_locale_data (in /lib64/libc-2.12.so)
| ->59.44% (3,400B) 0x3A08A2A44B: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
|   ->59.44% (3,400B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|     ->59.44% (3,400B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|       ->59.44% (3,400B) 0x4084AD: ??? (in /bin/ls)
|         ->59.44% (3,400B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->02.90% (166B) 0x3A08A81040: strdup (in /lib64/libc-2.12.so)
| ->02.52% (144B) 0x3A08A29266: setlocale (in /lib64/libc-2.12.so)
| | ->02.52% (144B) 0x4084AD: ??? (in /bin/ls)
| |   ->02.52% (144B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
| |
| ->00.38% (22B) in 1+ places, all below ms_print's threshold (01.00%)
|
->02.10% (120B) 0x3A08A2A3D7: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
| ->02.10% (120B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|   ->02.10% (120B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|     ->02.10% (120B) 0x4084AD: ??? (in /bin/ls)
|       ->02.10% (120B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->00.80% (46B) in 1+ places, all below ms_print's threshold (01.00%)

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 56        340,913            5,376            3,732           372        1,272
 57        343,825            5,432            3,732           372        1,328
 58        346,775            5,408            3,732           372        1,304
 59        348,801            5,800            3,732           372        1,696
64.34% (3,732B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->58.62% (3,400B) 0x3A08A29DF5: _nl_intern_locale_data (in /lib64/libc-2.12.so)
| ->58.62% (3,400B) 0x3A08A2A44B: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
|   ->58.62% (3,400B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|     ->58.62% (3,400B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|       ->58.62% (3,400B) 0x4084AD: ??? (in /bin/ls)
|         ->58.62% (3,400B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->02.86% (166B) 0x3A08A81040: strdup (in /lib64/libc-2.12.so)
| ->02.48% (144B) 0x3A08A29266: setlocale (in /lib64/libc-2.12.so)
| | ->02.48% (144B) 0x4084AD: ??? (in /bin/ls)
| |   ->02.48% (144B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
| |
| ->00.38% (22B) in 1+ places, all below ms_print's threshold (01.00%)
|
->02.07% (120B) 0x3A08A2A3D7: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
| ->02.07% (120B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|   ->02.07% (120B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|     ->02.07% (120B) 0x4084AD: ??? (in /bin/ls)
|       ->02.07% (120B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->00.79% (46B) in 1+ places, all below ms_print's threshold (01.00%)

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 60        350,833           24,080           23,044           412          624
95.70% (23,044B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->80.20% (19,312B) 0x4116B7: ??? (in /bin/ls)
| ->79.73% (19,200B) 0x408955: ??? (in /bin/ls)
| | ->79.73% (19,200B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
| |
| ->00.47% (112B) in 1+ places, all below ms_print's threshold (01.00%)
|
->14.12% (3,400B) 0x3A08A29DF5: _nl_intern_locale_data (in /lib64/libc-2.12.so)
| ->14.12% (3,400B) 0x3A08A2A44B: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
|   ->14.12% (3,400B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|     ->14.12% (3,400B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|       ->14.12% (3,400B) 0x4084AD: ??? (in /bin/ls)
|         ->14.12% (3,400B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->01.38% (332B) in 7 places, all below massif's threshold (01.00%)

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 61        351,206           24,864           23,076           420        1,368
92.81% (23,076B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->77.80% (19,344B) 0x4116B7: ??? (in /bin/ls)
| ->77.22% (19,200B) 0x408955: ??? (in /bin/ls)
| | ->77.22% (19,200B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
| |
| ->00.58% (144B) in 1+ places, all below ms_print's threshold (01.00%)
|
->13.67% (3,400B) 0x3A08A29DF5: _nl_intern_locale_data (in /lib64/libc-2.12.so)
| ->13.67% (3,400B) 0x3A08A2A44B: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
|   ->13.67% (3,400B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|     ->13.67% (3,400B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|       ->13.67% (3,400B) 0x4084AD: ??? (in /bin/ls)
|         ->13.67% (3,400B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->01.34% (332B) in 7 places, all below massif's threshold (01.00%)

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 62        352,115           25,176           23,076           420        1,680
91.66% (23,076B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->76.84% (19,344B) 0x4116B7: ??? (in /bin/ls)
| ->76.26% (19,200B) 0x408955: ??? (in /bin/ls)
| | ->76.26% (19,200B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
| |
| ->00.57% (144B) in 1+ places, all below ms_print's threshold (01.00%)
|
->13.50% (3,400B) 0x3A08A29DF5: _nl_intern_locale_data (in /lib64/libc-2.12.so)
| ->13.50% (3,400B) 0x3A08A2A44B: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
|   ->13.50% (3,400B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|     ->13.50% (3,400B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|       ->13.50% (3,400B) 0x4084AD: ??? (in /bin/ls)
|         ->13.50% (3,400B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->01.32% (332B) in 7 places, all below massif's threshold (01.00%)

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 63        352,840           25,736           23,078           442        2,216
89.67% (23,078B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->75.17% (19,346B) 0x4116B7: ??? (in /bin/ls)
| ->74.60% (19,200B) 0x408955: ??? (in /bin/ls)
| | ->74.60% (19,200B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
| |
| ->00.57% (146B) in 1+ places, all below ms_print's threshold (01.00%)
|
->13.21% (3,400B) 0x3A08A29DF5: _nl_intern_locale_data (in /lib64/libc-2.12.so)
| ->13.21% (3,400B) 0x3A08A2A44B: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
|   ->13.21% (3,400B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|     ->13.21% (3,400B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|       ->13.21% (3,400B) 0x4084AD: ??? (in /bin/ls)
|         ->13.21% (3,400B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->01.29% (332B) in 7 places, all below massif's threshold (01.00%)

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 64        353,681           26,048           23,078           442        2,528
88.60% (23,078B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->74.27% (19,346B) 0x4116B7: ??? (in /bin/ls)
| ->73.71% (19,200B) 0x408955: ??? (in /bin/ls)
| | ->73.71% (19,200B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
| |
| ->00.56% (146B) in 1+ places, all below ms_print's threshold (01.00%)
|
->13.05% (3,400B) 0x3A08A29DF5: _nl_intern_locale_data (in /lib64/libc-2.12.so)
| ->13.05% (3,400B) 0x3A08A2A44B: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
|   ->13.05% (3,400B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|     ->13.05% (3,400B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|       ->13.05% (3,400B) 0x4084AD: ??? (in /bin/ls)
|         ->13.05% (3,400B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->01.27% (332B) in 7 places, all below massif's threshold (01.00%)

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 65        354,073           57,912           55,886           458        1,568
96.50% (55,886B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->56.65% (32,808B) 0x3A08AA87CF: __alloc_dir (in /lib64/libc-2.12.so)
| ->56.65% (32,808B) 0x407DD2: ??? (in /bin/ls)
|   ->56.65% (32,808B) 0x4089DB: ??? (in /bin/ls)
|     ->56.65% (32,808B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->33.41% (19,346B) 0x4116B7: ??? (in /bin/ls)
| ->33.15% (19,200B) 0x408955: ??? (in /bin/ls)
| | ->33.15% (19,200B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
| |
| ->00.25% (146B) in 1+ places, all below ms_print's threshold (01.00%)
|
->05.87% (3,400B) 0x3A08A29DF5: _nl_intern_locale_data (in /lib64/libc-2.12.so)
| ->05.87% (3,400B) 0x3A08A2A44B: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
|   ->05.87% (3,400B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|     ->05.87% (3,400B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|       ->05.87% (3,400B) 0x4084AD: ??? (in /bin/ls)
|         ->05.87% (3,400B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->00.57% (332B) in 1+ places, all below ms_print's threshold (01.00%)

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 66        354,410           58,560           55,886           458        2,216
95.43% (55,886B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->56.02% (32,808B) 0x3A08AA87CF: __alloc_dir (in /lib64/libc-2.12.so)
| ->56.02% (32,808B) 0x407DD2: ??? (in /bin/ls)
|   ->56.02% (32,808B) 0x4089DB: ??? (in /bin/ls)
|     ->56.02% (32,808B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->33.04% (19,346B) 0x4116B7: ??? (in /bin/ls)
| ->32.79% (19,200B) 0x408955: ??? (in /bin/ls)
| | ->32.79% (19,200B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
| |
| ->00.25% (146B) in 1+ places, all below ms_print's threshold (01.00%)
|
->05.81% (3,400B) 0x3A08A29DF5: _nl_intern_locale_data (in /lib64/libc-2.12.so)
| ->05.81% (3,400B) 0x3A08A2A44B: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
|   ->05.81% (3,400B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|     ->05.81% (3,400B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|       ->05.81% (3,400B) 0x4084AD: ??? (in /bin/ls)
|         ->05.81% (3,400B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->00.57% (332B) in 1+ places, all below ms_print's threshold (01.00%)

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 67        357,361           58,368           55,894           546        1,928
 68        360,283           25,664           23,182           538        1,944
 69        363,320           25,440           23,182           538        1,720
 70        366,264           25,920           23,182           538        2,200
 71        369,208           26,576           23,662           554        2,360
 72        372,166           35,800           23,662           554       11,584
 73        375,098           25,808           23,662           554        1,592
 74        378,061           25,424           23,628           524        1,272
 75        381,023           25,520           23,628           524        1,368
 76        383,957           25,152           23,628           524        1,000
93.94% (23,628B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->78.34% (19,704B) 0x4116B7: ??? (in /bin/ls)
| ->76.34% (19,200B) 0x408955: ??? (in /bin/ls)
| | ->76.34% (19,200B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
| |
| ->01.15% (288B) 0x40764A: ??? (in /bin/ls)
| | ->01.15% (288B) 0x407AE3: ??? (in /bin/ls)
| |   ->01.15% (288B) 0x408250: ??? (in /bin/ls)
| |     ->01.15% (288B) 0x4089DB: ??? (in /bin/ls)
| |       ->01.15% (288B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
| |
| ->00.86% (216B) in 1+ places, all below ms_print's threshold (01.00%)
|
->13.52% (3,400B) 0x3A08A29DF5: _nl_intern_locale_data (in /lib64/libc-2.12.so)
| ->13.52% (3,400B) 0x3A08A2A44B: _nl_load_locale_from_archive (in /lib64/libc-2.12.so)
|   ->13.52% (3,400B) 0x3A08A29939: _nl_find_locale (in /lib64/libc-2.12.so)
|     ->13.52% (3,400B) 0x3A08A29114: setlocale (in /lib64/libc-2.12.so)
|       ->13.52% (3,400B) 0x4084AD: ??? (in /bin/ls)
|         ->13.52% (3,400B) 0x3A08A1ECDB: (below main) (in /lib64/libc-2.12.so)
|
->02.08% (524B) in 9 places, all below massif's threshold (01.00%)

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 77        386,900           25,800           23,628           524        1,648
 78        389,810           25,768           23,628           524        1,616
 79        392,721           24,944           23,628           524          792
 80        395,716           25,800           23,628           524        1,648
 81        398,625           25,768           23,628           524        1,616
 82        401,537           24,544           23,460           356          728
 83        404,450           20,728           19,896           152          680

以上より、lsコマンドのメモリ使用量の最大値は、55.12KBであることがわかる。



ちなみに、

useful-heap(B):プログラムが要求したバイト数。
extra-heap(B) :プログラムが要求したものを超えて割り当てられたバイト数。


また、timeコマンドで、メモリ使用量の最大値を計測する方法が、いろいろなブログで紹介されているが、うまくいっていないようなので、valgrindコマンドのほうが、たぶん確実。試しにmallocでテストしたら確保した分だけ計測できることを確認できた。

http://d.hatena.ne.jp/N_Nao/20111226/1324926173