プロファイラー gprofの使い方
スポンサーリンク
このドキュメントの内容は、以下の通りです。
はじめに
少し忘れかけてきたので、 gprof の覚書を書くことにしました。
main.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/fcntl.h>
#include <sys/types.h>
#include <err.h>
const unsigned long max = 65530;
#define MAX_BUF 1024
void
Write ()
{
int fd = open ("/dev/null", O_WRONLY);
if (fd == -1)
err (1, "can not open /dev/null");
unsigned long i;
char buf[MAX_BUF] = { 0 };
for (i = 0; i < max; i++)
if (write (fd, buf, sizeof (buf) ) == -1)
err (1, "write error");
close (fd);
}
void
Fwrite ()
{
FILE *fp = fopen ("/dev/null", "w");
if (NULL == fp)
err (1, "can not fopen /dev/null");
unsigned long i;
char buf[MAX_BUF] = { 0 };
for (i = 0; i < max; i++)
if (fwrite (buf, 1, sizeof (buf), fp) == -1)
err (1, "fwrite error");
fclose (fp);
}
// Function int main(int argc, char *argv[]) {{{
int main(int argc, char *argv[])
{
puts ("Write");
Write ();
puts ("Fwrite");
Fwrite ();
puts ("done");
exit (EXIT_SUCCESS);
} // }}}
コンパイル、実行
gcc -O -Wall -g -pg main.c ./a.out gprof ./a.out
結果
書き込みサイズが小さいとバッファリングする fwrite のほうが write より早い。
gprof ./a.out
None
call graph profile:
The sum of self and descendents is the major sort
for this listing.
function entries:
index the index of the function in the call graph
listing, as an aid to locating it (see below).
%time the percentage of the total time of the program
accounted for by this function and its
descendents.
self the number of seconds spent in this function
itself.
descendents
the number of seconds spent in the descendents of
this function on behalf of this function.
called the number of times this function is called (other
than recursive calls).
self the number of times this function calls itself
recursively.
name the name of the function, with an indication of
its membership in a cycle, if any.
index the index of the function in the call graph
listing, as an aid to locating it.
parent listings:
self* the number of seconds of this function's self time
which is due to calls from this parent.
descendents*
the number of seconds of this function's
descendent time which is due to calls from this
parent.
called** the number of times this function is called by
this parent. This is the numerator of the
fraction which divides up the function's time to
its parents.
total* the number of times this function was called by
all of its parents. This is the denominator of
the propagation fraction.
parents the name of this parent, with an indication of the
parent's membership in a cycle, if any.
index the index of this parent in the call graph
listing, as an aid in locating it.
children listings:
self* the number of seconds of this child's self time
which is due to being called by this function.
descendent*
the number of seconds of this child's descendent's
time which is due to being called by this
function.
called** the number of times this child is called by this
function. This is the numerator of the
propagation fraction for this child.
total* the number of times this child is called by all
functions. This is the denominator of the
propagation fraction.
children the name of this child, and an indication of its
membership in a cycle, if any.
index the index of this child in the call graph listing,
as an aid to locating it.
* these fields are omitted for parents (or
children) in the same cycle as the function. If
the function (or child) is a member of a cycle,
the propagated times and propagation denominator
represent the self time and descendent time of the
cycle as a whole.
** static-only parents and children are indicated
by a call count of 0.
cycle listings:
the cycle as a whole is listed with the same
fields as a function entry. Below it are listed
the members of the cycle, and their contributions
to the time and call counts of the cycle.
granularity: each sample hit covers 4 byte(s) for 2.38% of 0.06 seconds
called/total parents
index %time self descendents called+self name index
called/total children
0.00 0.06 1/1 _start [2]
[1] 100.0 0.00 0.06 1 main [1]
0.00 0.04 1/1 Write [4]
0.00 0.03 1/1 Fwrite [5]
0.00 0.00 3/3 puts [12]
0.00 0.00 1/1 exit [27]
-----------------------------------------------
<spontaneous>
[2] 100.0 0.00 0.06 _start [2]
0.00 0.06 1/1 main [1]
-----------------------------------------------
0.01 0.00 16386/81916 _swrite [10]
0.04 0.00 65530/81916 Write [4]
[3] 71.4 0.05 0.00 81916 _write [3]
-----------------------------------------------
0.00 0.04 1/1 main [1]
[4] 57.1 0.00 0.04 1 Write [4]
0.04 0.00 65530/81916 _write [3]
0.00 0.00 1/2 open [24]
0.00 0.00 1/3 memset [15]
0.00 0.00 1/2 close [18]
-----------------------------------------------
0.00 0.03 1/1 main [1]
[5] 42.9 0.00 0.03 1 Fwrite [5]
0.00 0.03 65530/65530 fwrite [6]
0.00 0.00 1/1 fclose [13]
0.00 0.00 1/1 fopen [28]
0.00 0.00 1/3 memset [15]
-----------------------------------------------
0.00 0.03 65530/65530 Fwrite [5]
[6] 42.9 0.00 0.03 65530 fwrite [6]
0.00 0.02 65530/65533 __sfvwrite [7]
-----------------------------------------------
0.00 0.00 3/65533 puts [12]
0.00 0.02 65530/65533 fwrite [6]
[7] 40.5 0.00 0.02 65533 __sfvwrite [7]
0.01 0.00 81918/81918 memcpy [8]
0.00 0.01 16385/16385 __fflush [11]
0.00 0.00 6/6 memchr [14]
0.00 0.00 2/2 __swsetup [236]
-----------------------------------------------
0.01 0.00 81918/81918 __sfvwrite [7]
[8] 21.4 0.01 0.00 81918 memcpy [8]
-----------------------------------------------
0.00 0.00 1/16386 fclose [13]
0.00 0.01 16385/16386 __fflush [11]
[9] 14.3 0.00 0.01 16386 __sflush [9]
0.00 0.01 16386/16386 _swrite [10]
-----------------------------------------------
0.00 0.01 16386/16386 __sflush [9]
[10] 14.3 0.00 0.01 16386 _swrite [10]
0.01 0.00 16386/81916 _write [3]
0.00 0.00 16386/16386 __swrite [233]
-----------------------------------------------
0.00 0.01 16385/16385 __sfvwrite [7]
[11] 14.3 0.00 0.01 16385 __fflush [11]
0.00 0.01 16385/16386 __sflush [9]
-----------------------------------------------
0.00 0.00 3/3 main [1]
[12] 0.0 0.00 0.00 3 puts [12]
0.00 0.00 3/65533 __sfvwrite [7]
-----------------------------------------------
0.00 0.00 1/1 Fwrite [5]
[13] 0.0 0.00 0.00 1 fclose [13]
0.00 0.00 1/16386 __sflush [9]
0.00 0.00 1/1 free [29]
0.00 0.00 1/2 close [18]
0.00 0.00 1/1 __sclose [240]
-----------------------------------------------
0.00 0.00 6/6 __sfvwrite [7]
[14] 0.0 0.00 0.00 6 memchr [14]
-----------------------------------------------
0.00 0.00 1/3 Write [4]
0.00 0.00 1/3 Fwrite [5]
0.00 0.00 1/3 __sfp [242]
[15] 0.0 0.00 0.00 3 memset [15]
-----------------------------------------------
0.00 0.00 1/3 free [29]
0.00 0.00 2/3 malloc [22]
[16] 0.0 0.00 0.00 3 pubrealloc [16]
0.00 0.00 2/2 imalloc [20]
0.00 0.00 1/1 ifree [30]
-----------------------------------------------
0.00 0.00 2/2 malloc_pages [23]
[17] 0.0 0.00 0.00 2 brk [17]
-----------------------------------------------
0.00 0.00 1/2 Write [4]
0.00 0.00 1/2 fclose [13]
[18] 0.0 0.00 0.00 2 close [18]
-----------------------------------------------
0.00 0.00 2/2 __swhatbuf [235]
[19] 0.0 0.00 0.00 2 fstat [19]
-----------------------------------------------
0.00 0.00 2/2 pubrealloc [16]
[20] 0.0 0.00 0.00 2 imalloc [20]
0.00 0.00 2/2 malloc_pages [23]
-----------------------------------------------
0.00 0.00 2/2 __smakebuf [234]
[21] 0.0 0.00 0.00 2 isatty [21]
0.00 0.00 2/2 tcgetattr [26]
-----------------------------------------------
0.00 0.00 2/2 __smakebuf [234]
[22] 0.0 0.00 0.00 2 malloc [22]
0.00 0.00 2/3 pubrealloc [16]
-----------------------------------------------
0.00 0.00 2/2 imalloc [20]
[23] 0.0 0.00 0.00 2 malloc_pages [23]
0.00 0.00 2/2 sbrk [25]
0.00 0.00 2/2 brk [17]
-----------------------------------------------
0.00 0.00 1/2 Write [4]
0.00 0.00 1/2 fopen [28]
[24] 0.0 0.00 0.00 2 open [24]
-----------------------------------------------
0.00 0.00 2/2 malloc_pages [23]
[25] 0.0 0.00 0.00 2 sbrk [25]
0.00 0.00 1/1 __error_unthreaded [239]
-----------------------------------------------
0.00 0.00 2/2 isatty [21]
[26] 0.0 0.00 0.00 2 tcgetattr [26]
0.00 0.00 2/2 __sys_ioctl [237]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[27] 0.0 0.00 0.00 1 exit [27]
0.00 0.00 1/1 __cxa_finalize [238]
-----------------------------------------------
0.00 0.00 1/1 Fwrite [5]
[28] 0.0 0.00 0.00 1 fopen [28]
0.00 0.00 1/1 __sflags [241]
0.00 0.00 1/1 __sfp [242]
0.00 0.00 1/2 open [24]
-----------------------------------------------
0.00 0.00 1/1 fclose [13]
[29] 0.0 0.00 0.00 1 free [29]
0.00 0.00 1/3 pubrealloc [16]
-----------------------------------------------
0.00 0.00 1/1 pubrealloc [16]
[30] 0.0 0.00 0.00 1 ifree [30]
-----------------------------------------------
0.00 0.00 1/1 _mcleanup (245)
[31] 0.0 0.00 0.00 1 moncontrol [31]
0.00 0.00 1/1 profil [32]
-----------------------------------------------
0.00 0.00 1/1 moncontrol [31]
[32] 0.0 0.00 0.00 1 profil [32]
-----------------------------------------------
0.00 0.00 1/1 _mcleanup (245)
[33] 0.0 0.00 0.00 1 sysctl [33]
-----------------------------------------------
0.00 0.00 16386/16386 _swrite [10]
[233] 0.0 0.00 0.00 16386 __swrite [233]
-----------------------------------------------
0.00 0.00 2/2 __swsetup [236]
[234] 0.0 0.00 0.00 2 __smakebuf [234]
0.00 0.00 2/2 __swhatbuf [235]
0.00 0.00 2/2 malloc [22]
0.00 0.00 2/2 isatty [21]
-----------------------------------------------
0.00 0.00 2/2 __smakebuf [234]
[235] 0.0 0.00 0.00 2 __swhatbuf [235]
0.00 0.00 2/2 fstat [19]
-----------------------------------------------
0.00 0.00 2/2 __sfvwrite [7]
[236] 0.0 0.00 0.00 2 __swsetup [236]
0.00 0.00 2/2 __smakebuf [234]
0.00 0.00 1/1 __sinit [243]
-----------------------------------------------
0.00 0.00 2/2 tcgetattr [26]
[237] 0.0 0.00 0.00 2 __sys_ioctl [237]
-----------------------------------------------
0.00 0.00 1/1 exit [27]
[238] 0.0 0.00 0.00 1 __cxa_finalize [238]
0.00 0.00 1/1 _mcleanup (245)
-----------------------------------------------
0.00 0.00 1/1 sbrk [25]
[239] 0.0 0.00 0.00 1 __error_unthreaded [239]
-----------------------------------------------
0.00 0.00 1/1 fclose [13]
[240] 0.0 0.00 0.00 1 __sclose [240]
-----------------------------------------------
0.00 0.00 1/1 fopen [28]
[241] 0.0 0.00 0.00 1 __sflags [241]
-----------------------------------------------
0.00 0.00 1/1 fopen [28]
[242] 0.0 0.00 0.00 1 __sfp [242]
0.00 0.00 1/3 memset [15]
-----------------------------------------------
0.00 0.00 1/1 __swsetup [236]
[243] 0.0 0.00 0.00 1 __sinit [243]
-----------------------------------------------
0.00 0.00 1/1 _mcleanup (245)
[244] 0.0 0.00 0.00 1 __sysctl [244]
-----------------------------------------------
flat profile:
% the percentage of the total running time of the
time program used by this function.
cumulative a running sum of the number of seconds accounted
seconds for by this function and those listed above it.
self the number of seconds accounted for by this
seconds function alone. This is the major sort for this
listing.
calls the number of times this function was invoked, if
this function is profiled, else blank.
self the average number of milliseconds spent in this
ms/call function per call, if this function is profiled,
else blank.
total the average number of milliseconds spent in this
ms/call function and its descendents per call, if this
function is profiled, else blank.
name the name of the function. This is the minor sort
for this listing. The index shows the location of
the function in the gprof listing. If the index is
in parenthesis it shows where it would appear in
the gprof listing if it were to be printed.
granularity: each sample hit covers 4 byte(s) for 1.32% of 0.11 seconds
% cumulative self self total
time seconds seconds calls ms/call ms/call name
44.7 0.05 0.05 .mcount (34)
39.5 0.10 0.05 81916 0.00 0.00 _write [3]
11.8 0.11 0.01 81918 0.00 0.00 memcpy [8]
2.6 0.11 0.00 65533 0.00 0.00 __sfvwrite [7]
1.3 0.11 0.00 65530 0.00 0.00 fwrite [6]
0.0 0.11 0.00 16386 0.00 0.00 __sflush [9]
0.0 0.11 0.00 16386 0.00 0.00 __swrite [233]
0.0 0.11 0.00 16386 0.00 0.00 _swrite [10]
0.0 0.11 0.00 16385 0.00 0.00 __fflush [11]
0.0 0.11 0.00 6 0.00 0.00 memchr [14]
0.0 0.11 0.00 3 0.00 0.00 memset [15]
0.0 0.11 0.00 3 0.00 0.00 pubrealloc [16]
0.0 0.11 0.00 3 0.00 0.00 puts [12]
0.0 0.11 0.00 2 0.00 0.00 __smakebuf [234]
0.0 0.11 0.00 2 0.00 0.00 __swhatbuf [235]
0.0 0.11 0.00 2 0.00 0.00 __swsetup [236]
0.0 0.11 0.00 2 0.00 0.00 __sys_ioctl [237]
0.0 0.11 0.00 2 0.00 0.00 brk [17]
0.0 0.11 0.00 2 0.00 0.00 close [18]
0.0 0.11 0.00 2 0.00 0.00 fstat [19]
0.0 0.11 0.00 2 0.00 0.00 imalloc [20]
0.0 0.11 0.00 2 0.00 0.00 isatty [21]
0.0 0.11 0.00 2 0.00 0.00 malloc [22]
0.0 0.11 0.00 2 0.00 0.00 malloc_pages [23]
0.0 0.11 0.00 2 0.00 0.00 open [24]
0.0 0.11 0.00 2 0.00 0.00 sbrk [25]
0.0 0.11 0.00 2 0.00 0.00 tcgetattr [26]
0.0 0.11 0.00 1 0.00 27.03 Fwrite [5]
0.0 0.11 0.00 1 0.00 36.03 Write [4]
0.0 0.11 0.00 1 0.00 0.00 __cxa_finalize [238]
0.0 0.11 0.00 1 0.00 0.00 __error_unthreaded [239]
0.0 0.11 0.00 1 0.00 0.00 __sclose [240]
0.0 0.11 0.00 1 0.00 0.00 __sflags [241]
0.0 0.11 0.00 1 0.00 0.00 __sfp [242]
0.0 0.11 0.00 1 0.00 0.00 __sinit [243]
0.0 0.11 0.00 1 0.00 0.00 __sysctl [244]
0.0 0.11 0.00 1 0.00 0.00 _mcleanup (245)
0.0 0.11 0.00 1 0.00 0.00 exit [27]
0.0 0.11 0.00 1 0.00 0.00 fclose [13]
0.0 0.11 0.00 1 0.00 0.00 fopen [28]
0.0 0.11 0.00 1 0.00 0.00 free [29]
0.0 0.11 0.00 1 0.00 0.00 ifree [30]
0.0 0.11 0.00 1 0.00 63.06 main [1]
0.0 0.11 0.00 1 0.00 0.00 moncontrol [31]
0.0 0.11 0.00 1 0.00 0.00 profil [32]
0.0 0.11 0.00 1 0.00 0.00 sysctl [33]
Index by function name
(34) .mcount [237] __sys_ioctl [1] main
[5] Fwrite [244] __sysctl [22] malloc
[4] Write (245) _mcleanup [23] malloc_pages
[238] __cxa_finalize [10] _swrite [14] memchr
[239] __error_unthreaded [3] _write [8] memcpy
[11] __fflush [17] brk [15] memset
[240] __sclose [18] close [31] moncontrol
[241] __sflags [27] exit [24] open
[9] __sflush [13] fclose [32] profil
[242] __sfp [28] fopen [16] pubrealloc
[7] __sfvwrite [29] free [12] puts
[243] __sinit [19] fstat [25] sbrk
[234] __smakebuf [6] fwrite [33] sysctl
[235] __swhatbuf [30] ifree [26] tcgetattr
[233] __swrite [20] imalloc
[236] __swsetup [21] isatty
main.cc の buf サイズ 255 を 65535 にしてみると
gprof -l -b a.out
書き込むバッファサイズが大きいほうが write は fwrite よりも早くなる。
None granularity: each sample hit covers 4 byte(s) for 0.10% of 1.48 seconds % cumulative self self total time seconds seconds calls ms/call ms/call name 52.2 0.77 0.77 1113998 0.00 0.00 _write [6] 36.9 1.32 0.55 .mcount (35) 8.6 1.45 0.13 131035 0.00 0.00 memcpy [8] 1.1 1.47 0.02 1048468 0.00 0.00 _swrite [7] 1.0 1.48 0.02 65533 0.00 0.01 __sfvwrite [3] 0.1 1.48 0.00 1048468 0.00 0.00 __swrite [12] 0.0 1.48 0.00 65530 0.00 0.01 fwrite [5] 0.0 1.48 0.00 65518 0.00 0.00 __sflush [9] 0.0 1.48 0.00 65517 0.00 0.00 __fflush [10] 0.0 1.48 0.00 6 0.00 0.00 memchr [15] 0.0 1.48 0.00 3 0.00 0.00 memset [16] 0.0 1.48 0.00 3 0.00 0.00 pubrealloc [17] 0.0 1.48 0.00 3 0.00 0.01 puts [13] 0.0 1.48 0.00 2 0.00 0.00 __smakebuf [234] 0.0 1.48 0.00 2 0.00 0.00 __swhatbuf [235] 0.0 1.48 0.00 2 0.00 0.00 __swsetup [236] 0.0 1.48 0.00 2 0.00 0.00 __sys_ioctl [237] 0.0 1.48 0.00 2 0.00 0.00 brk [18] 0.0 1.48 0.00 2 0.00 0.00 close [19] 0.0 1.48 0.00 2 0.00 0.00 fstat [20] 0.0 1.48 0.00 2 0.00 0.00 imalloc [21] 0.0 1.48 0.00 2 0.00 0.00 isatty [22] 0.0 1.48 0.00 2 0.00 0.00 malloc [23] 0.0 1.48 0.00 2 0.00 0.00 malloc_pages [24] 0.0 1.48 0.00 2 0.00 0.00 open [25] 0.0 1.48 0.00 2 0.00 0.00 sbrk [26] 0.0 1.48 0.00 2 0.00 0.00 tcgetattr [27] 0.0 1.48 0.00 1 0.00 889.82 Fwrite [4] 0.0 1.48 0.00 1 0.00 45.58 Write [11] 0.0 1.48 0.00 1 0.00 0.00 __cxa_finalize [238] 0.0 1.48 0.00 1 0.00 0.00 __error_unthreaded [239] 0.0 1.48 0.00 1 0.00 0.00 __sclose [240] 0.0 1.48 0.00 1 0.00 0.00 __sflags [241] 0.0 1.48 0.00 1 0.00 0.00 __sfp [242] 0.0 1.48 0.00 1 0.00 0.00 __sinit [243] 0.0 1.48 0.00 1 0.00 0.00 __sysctl [244] 0.0 1.48 0.00 1 0.00 0.00 _mcleanup (245) 0.0 1.48 0.00 1 0.00 0.00 exit [28] 0.0 1.48 0.00 1 0.00 0.00 fclose [14] 0.0 1.48 0.00 1 0.00 0.00 fopen [29] 0.0 1.48 0.00 1 0.00 0.00 free [30] 0.0 1.48 0.00 1 0.00 0.00 ifree [31] 0.0 1.48 0.00 1 0.00 935.44 main [1] 0.0 1.48 0.00 1 0.00 0.00 moncontrol [32] 0.0 1.48 0.00 1 0.00 0.00 profil [33] 0.0 1.48 0.00 1 0.00 0.00 sysctl [34] Index by function name (35) .mcount [237] __sys_ioctl [1] main [4] Fwrite [244] __sysctl [23] malloc [11] Write (245) _mcleanup [24] malloc_pages [238] __cxa_finalize [7] _swrite [15] memchr [239] __error_unthreaded [6] _write [8] memcpy [10] __fflush [18] brk [16] memset [240] __sclose [19] close [32] moncontrol [241] __sflags [28] exit [25] open [9] __sflush [14] fclose [33] profil [242] __sfp [29] fopen [17] pubrealloc [3] __sfvwrite [30] free [13] puts [243] __sinit [20] fstat [26] sbrk [234] __smakebuf [5] fwrite [34] sysctl [235] __swhatbuf [31] ifree [27] tcgetattr [12] __swrite [21] imalloc [236] __swsetup [22] isatty
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12