$val) { $list[$key] = db_escape_string($val); } return implode("','", $list); } } function db_query_dummy($query) { $args = func_get_args(); array_shift($args); if (isset($args[0]) and is_array($args[0])) { // 'All arguments in one array' syntax $args = $args[0]; } _db_query_callback($args, TRUE); $query = preg_replace_callback(DB_QUERY_REGEXP, '_db_query_callback', $query); return $query; } $t1 = $t2 = $t3 = $t4 = 0.0; //$args = array('blog'); //$args = array('story', 'page', 'blog'); $args = array('story', 'page', 'blog', 'xxx', 'yyy', 'zzz', 'rrr', 'aaaaa', 'bbbb', 'cccc', 'wewqeqwewqwe'); echo("\n". db_query_dummy('SELECT * FROM {node} WHERE type IN('.implode(',', array_fill(0, count($args), "'%s'")).')', $args)); echo("\n". db_query_dummy("SELECT * FROM {node} WHERE type IN('%S')", implode(',', $args))); echo("\n". db_query_dummy("SELECT * FROM {node} WHERE type IN('%I')", implode(',', $args))); echo("\n"); for ($i = 0; $i < 1000; ++$i) { $time_start = microtime_float(); for ($j = 0; $j < 200; ++$j) { db_query_dummy('SELECT * FROM {node} WHERE type IN('.implode(',', array_fill(0, count($args), "'%s'")).')', $args); } $time_end = microtime_float(); $t1 += $time_end - $time_start; $time_start = microtime_float(); for ($j = 0; $j < 200; ++$j) { db_query_dummy("SELECT * FROM {node} WHERE type IN('%S')", implode(',', $args)); } $time_end = microtime_float(); $t2 += $time_end - $time_start; $time_start = microtime_float(); for ($j = 0; $j < 200; ++$j) { db_query_dummy("SELECT * FROM {node} WHERE type IN('%I')", implode(',', $args)); } $time_end = microtime_float(); $t3 += $time_end - $time_start; } echo ("t1: $t1, t2: $t2, t3: $t3 where num args is ".count($args)."\n");