クラスに空の内容のメソッドを持たせるべきか持たせざるべきか
2007年12月30日
現在の仕様では、新しいクラスが呼び出されたときに、init()メソッドが存在すればそれを呼び出す仕組みになっている。クラスによっては、init()メソッドは必要ではないのであるが、その場合は、init()メソッド呼び出しの際の命令でWarningが発生する(@を用いているので、表示されない)。
このようなケースに、空の内容のinit()メソッドを記述しておいたほうが早いのか、何も記述しないほうが早いのか、調べてみた。
実行結果
記述しておいたほうが、5μ秒ほど早いようである(笑)。
このようなケースに、空の内容のinit()メソッドを記述しておいたほうが早いのか、何も記述しないほうが早いのか、調べてみた。
<?php $time_index=microtime(); @call_user_func(array('test','init')); $time_index=(int)((microtime()-$time_index)*1000000); echo "test: $time_index usec<br />\n"; $time_index=microtime(); @call_user_func(array('test1','init')); $time_index=(int)((microtime()-$time_index)*1000000); echo "test1: $time_index usec<br />\n"; $time_index=microtime(); @call_user_func(array('test2','init')); $time_index=(int)((microtime()-$time_index)*1000000); echo "test2: $time_index usec<br />\n"; $time_index=microtime(); @call_user_func(array('test2','init')); $time_index=(int)((microtime()-$time_index)*1000000); echo "test2: $time_index usec<br />\n"; $time_index=microtime(); @call_user_func(array('test1','init')); $time_index=(int)((microtime()-$time_index)*1000000); echo "test1: $time_index usec<br />\n"; $time_index=microtime(); @call_user_func(array('test1','init')); $time_index=(int)((microtime()-$time_index)*1000000); echo "test1: $time_index usec<br />\n"; $time_index=microtime(); @call_user_func(array('test2','init')); $time_index=(int)((microtime()-$time_index)*1000000); echo "test2: $time_index usec<br />\n"; $time_index=microtime(); @call_user_func(array('test2','init')); $time_index=(int)((microtime()-$time_index)*1000000); echo "test2: $time_index usec<br />\n"; $time_index=microtime(); @call_user_func(array('test1','init')); $time_index=(int)((microtime()-$time_index)*1000000); echo "test1: $time_index usec<br />\n"; class test{ } class test1{ } class test2{ static public function init(){} }
実行結果
test: 48 usec test1: 18 usec test2: 16 usec test2: 12 usec test1: 18 usec test1: 18 usec test2: 12 usec test2: 13 usec test1: 18 usec
記述しておいたほうが、5μ秒ほど早いようである(笑)。