凌的博客

您现在的位置是: 首页 > 学无止境 > PHP > 

PHP

php yield测试

2016-08-01 PHP 762
header(\'Content-Type: text/html; charset=utf-8;\'); //初始化 获取当前使用的内存 G(\'start\'); $start = memory_get_usage(); // $arr= range(0,1000000); // // function gen(){ // $ret = (yield \'yie
	header('Content-Type: text/html; charset=utf-8;');
	
	//初始化 获取当前使用的内存
	G('start');
	$start = memory_get_usage();
//	$arr= range(0,1000000);
//	
//	function gen(){
//		$ret = (yield 'yield1');
//		var_dump($ret);
//		$ret = (yield 'yield2');
//		var_dump($ret);
//	}
//	
//	$gen = gen();
//	var_dump($gen->current());
//	$gen->send('ret1');
//	var_dump($gen->current());
//	$gen->send('ret2');
	foreach( test() as $v){
		echo $v;
	}
	
	$end = memory_get_usage();
	G('end');
	echo "\n\n执行时间:".G('start','end');
	echo "\n\n执行内存:".format_memory($end-$start);
	
	function G($start='start',$end=''){
		static $data = array();
		if($end==''){
			$data[$start] = mtime();
		}else{
			return format_time($data[$end] - $data[$start]);
		}
	}
	
	function mtime(){
		$tmp = explode(' ',microtime());	
		return $tmp[0] $tmp[1];
	}


	function format_memory($num){
		return sprintf('%.6f',$num/(1024*1024)).'MB';	
	}
	function format_time($num){
		return sprintf('%.2f',$num*1000).'ms';	
	}



	function xrange($start,$end,$step){
		if($start>$end){
			$tmp = $end;
			$end = $start;
			$start = $tmp;	
		}	
		
		if($step<0){
			throw new LogicException('步长必须大于0');	
		}
		
		for($i=$start;$i<$end;$i =$step){
			yield $i;
		}
	}
	
	
	function test(){
		echo 'a';
		return range(0,19);	
	}

文章评论

0条评论