スポンサーリンク

このドキュメントの内容は、以下の通りです。

はじめに


少し忘れかけてきたので、 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             

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 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

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー