제목 | 연관배열 vs 객체 | ||
---|---|---|---|
글쓴이 | 지훈임돠 | 작성시각 | 2012/12/14 09:26:39 |
|
|||
CI 에서 엑티브레코드 기본함수 리턴값이 객체라서, 여지껏 객체위주로 써오다가... 배열 vs 객체 쳐보니... 배열이 더 빠르다고, 왠만하면 배열 쓰라고 합니다~ |
|||
다음글 | 오페라 모바일 브라우져 (2) | ||
이전글 | 테이블 칼럼이름값 자동으로 가져오기 | ||
milosz
/
2012/12/14 09:45:10 /
추천
0
http://aggregation.novaak.net/?q=node/227
버전에 따라 다른가보네요... 테스트코드 만들어서 한번 다같이 돌려보는거 어떨까요?ㅎㅎ
|
||||||||||||||||||||
지훈임돠
/
2012/12/14 09:54:03 /
추천
0
<? function p($i) { echo '<pre>'; print_r($i); echo '</pre>'; } $t0 = microtime(true); for ($i=0; $i<1000; $i++) { $z = (object) null; for ($j=0; $j<1000; $j++) { $z->aaa = 'aaa'; $z->bbb = 'bbb'; $z->ccc = $z->aaa.$z->bbb; } } echo '<p>obj: '.(microtime(true) - $t0); p($z); $t0 = microtime(true); for ($i=0; $i<1000; $i++) { $z = array(); for ($j=0; $j<1000; $j++) { $z['aaa'] = 'aaa'; $z['bbb'] = 'bbb'; $z['ccc'] = $z['aaa'].$z['bbb']; } } echo '<p>arrays: '.(microtime(true) - $t0); p($z); echo '<p> phpversion '.phpversion(); |
||||||||||||||||||||
지훈임돠
/
2012/12/14 09:56:03 /
추천
0
위 코드로 테스트한 결과입니다.
obj: 1.0816578865051 arrays: 0.65077614784241 phpversion 5.3.18 |
||||||||||||||||||||
milosz
/
2012/12/14 10:03:21 /
추천
0
obj가 빠르다는 글들은 어떤 상황인걸까요? 흠.. obj: 1.1751770973206 arrays: 0.74294209480286 phpversion 5.3.13
|
||||||||||||||||||||
지훈임돠
/
2012/12/14 10:04:35 /
추천
0
오브젝트가 코딩하기는 더 편한거같아요..ㅎㅎ
a['하하'] a->하하 타자 4개 쳐야할거를 2개만 치면 되니... |
||||||||||||||||||||
milosz
/
2012/12/14 10:08:42 /
추천
0
처리속도는 array가 빠른데 작업속도는 object가 빠르다던가ㅎㅎ
인터프리터다보니 차이가 많이 나나보네요. |
||||||||||||||||||||
한대승(불의회상)
/
2012/12/14 11:06:01 /
추천
0
재미 있어 보여 저도 테스트.. ^^
일단 CI를 사용하니 CI의 벤치마크 기능과 프로파일러를 써서 테스트 해 봤습니다. OS : MAC OS X 10.7.5 PHP버젼 : 5.3.1 * 소스 코드 <?php class test_obj { public $aaa; public $bbb; public $ccc; function __construct() { $this->aaa = 'aaa'; $this->bbb = 'bbb'; $this->ccc = NULL; } function set_ccc($aaa, $bbb) { $this->ccc = $aaa . $bbb; } } class Arr_vs_obj extends CI_Controller { function index() { $this->output->enable_profiler(TRUE); $arr = array(); $obj = NULL; $this->benchmark->mark('array_set_start'); for($i=0; $i < 1000; $i++) { $arr[] = array( 'aaa' => 'aaa', 'bbb' => 'bbb', 'ccc' => NULL ); } $this->benchmark->mark('array_set_end'); $this->benchmark->mark('array_foreach_start'); foreach($arr as $item) $item['ccc'] = $item['aaa'] . $item['bbb']; $this->benchmark->mark('array_foreach_end'); $this->benchmark->mark('obj_set_start'); for($i=0; $i < 1000; $i++) { $obj[] = new test_obj; } $this->benchmark->mark('obj_set_end'); $this->benchmark->mark('obj_foreach1_start'); foreach($obj as $item) $item->ccc = $item->aaa . $item->bbb; $this->benchmark->mark('obj_foreach1_end'); $this->benchmark->mark('obj_foreach2_start'); foreach($obj as $item) $item->set_ccc($item->aaa, $item->bbb); $this->benchmark->mark('obj_foreach2_end'); } }* 결과 Object 변수에 직접 접근 할 때는 배열 보다 빠르군요. ^^ |
||||||||||||||||||||
milosz
/
2012/12/14 11:09:09 /
추천
0
이미 객체 위에서 동작하는 경우는 객체가 더 빠른가보네요.
갈수록 흥미로운 결과가... 과연 최후의 승자는?!ㅎ |
||||||||||||||||||||
지훈임돠
/
2012/12/14 11:45:02 /
추천
0
class Arr_vs_obj extends CI_Controller { function index() { $this->output->enable_profiler(TRUE); $arr = array(); $obj = NULL; $this->benchmark->mark('array_set_start'); for($i=0; $i < 1000; $i++) { $arr[] = array( 'aaa' => 'aaa', 'bbb' => 'bbb', 'ccc' => NULL ); } $this->benchmark->mark('array_set_end'); $this->benchmark->mark('array_foreach_start'); foreach($arr as $item) $item['ccc'] = $item['aaa'] . $item['bbb']; $this->benchmark->mark('array_foreach_end'); $this->benchmark->mark('array_foreach0_start'); foreach($arr as $item) $ttt++;; $this->benchmark->mark('array_foreach0_end'); $this->benchmark->mark('obj_set_start'); for($i=0; $i < 1000; $i++) { $obj[] = new test_obj; } $this->benchmark->mark('obj_set_end'); $this->benchmark->mark('obj_foreach1_start'); foreach($obj as $item) $item->ccc = $item->aaa . $item->bbb; $this->benchmark->mark('obj_foreach1_end'); $this->benchmark->mark('obj_foreach2_start'); foreach($obj as $item) $item->set_ccc($item->aaa, $item->bbb); $this->benchmark->mark('obj_foreach2_end'); $this->benchmark->mark('obj_foreach0_start'); foreach($obj as $item) $kkk++; $this->benchmark->mark('obj_foreach0_end'); } } class test_obj { public $aaa; public $bbb; public $ccc; function __construct() { $this->aaa = 'aaa'; $this->bbb = 'bbb'; $this->ccc = NULL; } function set_ccc($aaa, $bbb) { $this->ccc = $aaa . $bbb; } } |
||||||||||||||||||||
지훈임돠
/
2012/12/14 11:45:27 /
추천
0
|
||||||||||||||||||||
지훈임돠
/
2012/12/14 11:46:57 /
추천
0
Obj Foreach0 은 foreach 속도만 비교한건데요.
set 은 array 가 빠르고... foreach 는 array 가 느리네요 |
||||||||||||||||||||
한대승(불의회상)
/
2012/12/14 12:31:45 /
추천
0
결론... 그때그때 달라요.. ^^
|
||||||||||||||||||||
헛발이
/
2012/12/14 12:37:45 /
추천
0
PHP는 인공지능 ㅋㅋ
|
||||||||||||||||||||