2014年4月9日水曜日

開発環境

C++実践プログラミング (スティーブ オウアルライン (著)、Steve Oualline (原著)、Steve Oualline(原著)、望月 康司(翻訳)、クイープ(翻訳) 、オライリー・ジャパン)のⅣ部(高度なプログラミング概念)の17章(デバッグと最適化)、17.12(プログラミング実習)、実習 17-3.を解いてみる。

その他参考書籍

実習 17-3.

コード(BBEdit, Emacs)

sample344_3_1.cpp

#include <iostream>
#include <cstring>

const int SIZE = 100000000;
int nums[SIZE];

int main(int argc, char *argv[])
{
  int total = 0;
  int i;

  std::memset(nums, -1, sizeof(nums));
  
  for (i = 0; i < SIZE; ++i)
    total += nums[i];

  std::cout << total << '\n';
  
  return (0);
}

sample344_3_2.cpp

#include <iostream>
#include <cstring>

const int SIZE = 100000000;
int nums[SIZE];

int main(int argc, char *argv[])
{
  int total = 0;
  int *nums_ptr;

  std::memset(nums, -1, sizeof(nums));
  
  for (nums_ptr = nums; nums_ptr <= &nums[SIZE - 1]; ++nums_ptr)
    total += *nums_ptr;

  std::cout << total << '\n';
  
  return (0);
}

Makefile

#
# FSFのg++コンパイラ用のMakefile
#
CC=g++
CFLAGS=-g -Wall
all: sample344_3_1 sample344_3_2

sample344_3_1: sample344_3_1.cpp
 ${CC} ${CFLAGS} -o sample344_3_1 sample344_3_1.cpp

sample344_3_2: sample344_3_2.cpp
 ${CC} ${CFLAGS} -o sample344_3_2 sample344_3_2.cpp

clean:
 rm sample344_3_1 sample344_3_2

入出力結果(Terminal)

$ make
g++ -g -Wall -o sample344_3_1 sample344_3_1.cpp
g++ -g -Wall -o sample344_3_2 sample344_3_2.cpp
$ time ./sample344_3_1
-100000000

real 0m4.068s
user 0m1.382s
sys 0m0.834s
$ time ./sample344_3_2
-100000000

real 0m3.554s
user 0m1.207s
sys 0m0.829s
$ time ./sample344_3_1
-100000000

real 0m3.952s
user 0m1.384s
sys 0m0.829s
$ time ./sample344_3_2
-100000000

real 0m3.517s
user 0m1.207s
sys 0m0.825s
$ time ./sample344_3_1
-100000000

real 0m3.994s
user 0m1.382s
sys 0m0.834s
$ time ./sample344_3_2
-100000000

real 0m3.449s
user 0m1.205s
sys 0m0.833s
$ time ./sample344_3_1
-100000000

real 0m3.931s
user 0m1.384s
sys 0m0.833s
$ time ./sample344_3_2
-100000000

real 0m3.526s
user 0m1.205s
sys 0m0.817s
$ time ./sample344_3_1
-100000000

real 0m3.791s
user 0m1.377s
sys 0m0.844s
$ time ./sample344_3_2
-100000000

real 0m3.615s
user 0m1.206s
sys 0m0.834s
$ 

0 コメント:

コメントを投稿