Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $tries = 1000000;
- function getName()
- {
- $names = array('a', 'b', 'c', 'd', 'e', 'f', 'g');
- shuffle($names);
- return $names[0];
- }
- class Invoker
- {
- public function call($name)
- {
- // for_N();
- // TODO что-то типа is_callable и массив соответствий
- }
- }
- $invoker = new Invoker();
- $cnt = $tries;
- $switchTime = microtime(true);
- while ($cnt--) {
- $name = getName();
- switch ($name) {
- case 'a':
- case 'b':
- case 'c':
- case 'd':
- case 'e':
- case 'f':
- // for_all_non_default()
- if ($name == 'a') {
- // for_A()
- } else if ($name == 'b') {
- // for_B()
- } else if ($name == 'c') {
- // for_C()
- } else if ($name == 'd') {
- // for_D()
- } else if ($name == 'e') {
- // for_E()
- } else if ($name == 'f') {
- // for_F()
- }
- break;
- default:
- // for_default()
- }
- }
- $switchTime = microtime(true) - $switchTime;
- $cnt = $tries;
- $callTime = microtime(true);
- $names = array('a', 'b', 'c', 'd', 'e', 'f');
- while ($cnt--) {
- $name = getName();
- if (isset($names[$name])) { // <-- самый быстрый, уделывает свитчи
- //if (in_array($name, $names)) { // <-- безбожно просрал свитчам
- // for_all_non_default()
- // метот call просто пустышка,
- // т.е. isset выше хоть и уделывает свитчи,
- // зато тут работа не выполняется
- // а если выбрать in_array, то и с пустышкой он свитчам просирает
- $invoker->call($name);
- } else {
- // for_default()
- }
- }
- $callTime = microtime(true) - $callTime;
- var_dump(
- $switchTime,
- $callTime
- );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement