Macでpython+opencvを使う
インストール
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!
本家サイトでも紹介されていますが、ここで、EclipseのArduinoアドインが提供されています。
Macでアドインのインストールを試したのですが、ぶっちゃけ設定が面倒だったので、途中で諦めました。
Arduino Eclipse Plugin - OsX Latest Stable
ここで、Ecpliseごと落としたほうが楽です。
が、それでもいくつか設定が必要です。(Mac OSX Yosemiteのみで検証しています。)
ハイパスフィルタ(High Pass Filter)
pythonで外部コマンドをたたいて標準出力を取得
いつまで使えるかわからないけどcommandsが便利。
http://docs.python.jp/2/library/commands.html
import commands
a = commands.getoutput("ls | wc -l")
print a2.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"))という感じ。
変数
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に置換する
制御文
条件分岐
執筆中・・・
ループ
執筆中・・・
関数
執筆中・・・
クラス
執筆中・・・
例外制御
言語オブジェクト
文字列を関数に変換できる機能。
コンソールコマンド
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でテストしたら確保した分だけ計測できることを確認できた。

